summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2017-04-07 16:08:04 +0000
committerpfg <pfg@FreeBSD.org>2017-04-07 16:08:04 +0000
commitfeaeb09c7553a3cb3242f6be7b39a5f4b4d5a3e7 (patch)
tree9779b1eeb4a9a1f1c6fccb20ee1fb04a426efb9d /lib/libc/stdlib
parent7317fc9c0522c902a4a0a67b17c5c5d25d04bff9 (diff)
downloadFreeBSD-src-feaeb09c7553a3cb3242f6be7b39a5f4b4d5a3e7.zip
FreeBSD-src-feaeb09c7553a3cb3242f6be7b39a5f4b4d5a3e7.tar.gz
MFC r315162:
libc: provide some bounds-checking through reallocarray(3). reallocarray(3) is a non portable extension that originated in OpenBSD. Given that it is already in FreeBSD's libc it is useful for the cases where reallocation involves a multiplication.
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r--lib/libc/stdlib/getenv.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/libc/stdlib/getenv.c b/lib/libc/stdlib/getenv.c
index 35e24a4..e90eccd 100644
--- a/lib/libc/stdlib/getenv.c
+++ b/lib/libc/stdlib/getenv.c
@@ -272,8 +272,8 @@ __rebuild_environ(int newEnvironSize)
/* Resize environ. */
if (newEnvironSize > environSize) {
tmpEnvironSize = newEnvironSize * 2;
- tmpEnviron = realloc(intEnviron, sizeof (*intEnviron) *
- (tmpEnvironSize + 1));
+ tmpEnviron = reallocarray(intEnviron, tmpEnvironSize + 1,
+ sizeof(*intEnviron));
if (tmpEnviron == NULL)
return (-1);
environSize = tmpEnvironSize;
@@ -306,8 +306,8 @@ __enlarge_env(void)
envVarsTotal++;
if (envVarsTotal > envVarsSize) {
newEnvVarsSize = envVarsTotal * 2;
- tmpEnvVars = realloc(envVars, sizeof (*envVars) *
- newEnvVarsSize);
+ tmpEnvVars = reallocarray(envVars, newEnvVarsSize,
+ sizeof(*envVars));
if (tmpEnvVars == NULL) {
envVarsTotal--;
return (false);
OpenPOWER on IntegriCloud