diff options
author | 2018-05-03 15:47:41 +0000 | |
---|---|---|
committer | 2018-05-03 15:47:41 +0000 | |
commit | 59133b9f845492c8221a5bf59409357b7e2a6a1c (patch) | |
tree | f9d68472fbc76bb62ec73bff85db04b46383b9eb /lib/libkvm/kvm.c | |
parent | Minor correction: we render HTML character references hexadecimal, (diff) | |
download | wireguard-openbsd-59133b9f845492c8221a5bf59409357b7e2a6a1c.tar.xz wireguard-openbsd-59133b9f845492c8221a5bf59409357b7e2a6a1c.zip |
A few fixes for kvm_getargv(3)/kvm_getenv(3):
1. Most notable: this splits argv buffer into argv-specific one
and environ-specific one. This makes ps -eww totally happy.
2. realloc() usage in kvm_argv() is now ENOMEM-prone.
3. The "int off" changed to "ptrdiff_t off", as it should be.
input & okay deraadt@, millert@
Diffstat (limited to 'lib/libkvm/kvm.c')
-rw-r--r-- | lib/libkvm/kvm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/libkvm/kvm.c b/lib/libkvm/kvm.c index dce4359fc78..fc0b3ededb0 100644 --- a/lib/libkvm/kvm.c +++ b/lib/libkvm/kvm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kvm.c,v 1.63 2017/12/14 17:06:33 guenther Exp $ */ +/* $OpenBSD: kvm.c,v 1.64 2018/05/03 15:47:41 zhuk Exp $ */ /* $NetBSD: kvm.c,v 1.43 1996/05/05 04:31:59 gwr Exp $ */ /*- @@ -191,6 +191,9 @@ _kvm_open(kvm_t *kd, const char *uf, const char *mf, const char *sf, kd->argspc = 0; kd->argbuf = 0; kd->argv = 0; + kd->envspc = 0; + kd->envbuf = 0; + kd->envp = 0; kd->vmst = NULL; kd->vm_page_buckets = 0; kd->kcore_hdr = 0; @@ -660,6 +663,12 @@ kvm_close(kvm_t *kd) free((void *)kd->argbuf); if (kd->argv != 0) free((void *)kd->argv); + if (kd->envspc != 0) + free((void *)kd->envspc); + if (kd->envbuf != 0) + free((void *)kd->envbuf); + if (kd->envp != 0) + free((void *)kd->envp); free((void *)kd); return (error); |