summaryrefslogtreecommitdiffstats
path: root/lib/libkvm/kvm_proc.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2014-10-15 02:03:05 +0000
committerderaadt <deraadt@openbsd.org>2014-10-15 02:03:05 +0000
commitf4ccacb317d6bfa5aefc0d618104deeaf2b34bfa (patch)
tree706110ccd90acf35732283e3a420e1732e114424 /lib/libkvm/kvm_proc.c
parentcreate a REALLOCARRAY macro, and use it where it gives us overflow (diff)
downloadwireguard-openbsd-f4ccacb317d6bfa5aefc0d618104deeaf2b34bfa.tar.xz
wireguard-openbsd-f4ccacb317d6bfa5aefc0d618104deeaf2b34bfa.zip
Apply reallocarray() idiom.
ok guenther
Diffstat (limited to 'lib/libkvm/kvm_proc.c')
-rw-r--r--lib/libkvm/kvm_proc.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c
index 66dc14d2746..fa1858211d4 100644
--- a/lib/libkvm/kvm_proc.c
+++ b/lib/libkvm/kvm_proc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kvm_proc.c,v 1.50 2014/07/04 05:58:31 guenther Exp $ */
+/* $OpenBSD: kvm_proc.c,v 1.51 2014/10/15 02:03:05 deraadt Exp $ */
/* $NetBSD: kvm_proc.c,v 1.30 1999/03/24 05:50:50 mrg Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -194,9 +194,9 @@ _kvm_ureadm(kvm_t *kd, const struct kinfo_proc *p, u_long va, u_long *cnt)
}
void *
-_kvm_realloc(kvm_t *kd, void *p, size_t n)
+_kvm_reallocarray(kvm_t *kd, void *p, size_t i, size_t n)
{
- void *np = (void *)realloc(p, n);
+ void *np = reallocarray(p, i, n);
if (np == 0)
_kvm_err(kd, kd->program, "out of memory");
@@ -229,13 +229,13 @@ kvm_argv(kvm_t *kd, const struct kinfo_proc *p, u_long addr, int narg,
* Try to avoid reallocs.
*/
kd->argc = MAX(narg + 1, 32);
- kd->argv = _kvm_malloc(kd, kd->argc *
+ kd->argv = _kvm_reallocarray(kd, NULL, kd->argc,
sizeof(*kd->argv));
if (kd->argv == 0)
return (0);
} else if (narg + 1 > kd->argc) {
kd->argc = MAX(2 * kd->argc, narg + 1);
- kd->argv = (char **)_kvm_realloc(kd, kd->argv, kd->argc *
+ kd->argv = (char **)_kvm_reallocarray(kd, kd->argv, kd->argc,
sizeof(*kd->argv));
if (kd->argv == 0)
return (0);
@@ -282,11 +282,11 @@ kvm_argv(kvm_t *kd, const struct kinfo_proc *p, u_long addr, int narg,
char **pp;
char *op = kd->argspc;
- kd->arglen *= 2;
- kd->argspc = (char *)_kvm_realloc(kd, kd->argspc,
- kd->arglen);
+ kd->argspc = _kvm_reallocarray(kd, kd->argspc,
+ kd->arglen, 2);
if (kd->argspc == 0)
return (0);
+ kd->arglen *= 2;
/*
* Adjust argv pointers in case realloc moved
* the string space.
@@ -426,10 +426,10 @@ again:
len = orglen;
ret = (sysctl(mib, 4, kd->argbuf, &len, NULL, 0) < 0);
if (ret && errno == ENOMEM) {
- orglen *= 2;
- buf = _kvm_realloc(kd, kd->argbuf, orglen);
+ buf = _kvm_reallocarray(kd, kd->argbuf, orglen, 2);
if (buf == NULL)
return (NULL);
+ orglen *= 2;
kd->argbuf = buf;
goto again;
}