diff options
author | Thomas Klausner <tk@giga.or.at> | 2015-12-30 12:28:57 +0100 |
---|---|---|
committer | Thomas Klausner <tk@giga.or.at> | 2015-12-30 12:28:57 +0100 |
commit | 9374a971445b33c8ba45325833a5d043267ec8b5 (patch) | |
tree | ea454a0125cd2b093984bb35b9334d45e9166f71 | |
parent | 711efe2a568d90eab671e2848b88fb037e4260b0 (diff) | |
download | psutil-9374a971445b33c8ba45325833a5d043267ec8b5.tar.gz |
Call kvm_close() in error cases to avoid resource leak.
-rw-r--r-- | psutil/arch/bsd/netbsd.c | 2 | ||||
-rw-r--r-- | psutil/arch/bsd/openbsd.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/psutil/arch/bsd/netbsd.c b/psutil/arch/bsd/netbsd.c index 91ecb665..308b5484 100644 --- a/psutil/arch/bsd/netbsd.c +++ b/psutil/arch/bsd/netbsd.c @@ -311,6 +311,7 @@ psutil_get_proc_list(kinfo_proc **procList, size_t *procCount) { result = kvm_getproc2(kd, KERN_PROC_ALL, 0, sizeof(kinfo_proc), &cnt); if (result == NULL) { + kvm_close(kd); err(1, NULL); return errno; } @@ -320,6 +321,7 @@ psutil_get_proc_list(kinfo_proc **procList, size_t *procCount) { size_t mlen = cnt * sizeof(kinfo_proc); if ((*procList = malloc(mlen)) == NULL) { + kvm_close(kd); err(1, NULL); return errno; } diff --git a/psutil/arch/bsd/openbsd.c b/psutil/arch/bsd/openbsd.c index 82a598d1..24a05524 100644 --- a/psutil/arch/bsd/openbsd.c +++ b/psutil/arch/bsd/openbsd.c @@ -178,6 +178,7 @@ psutil_get_proc_list(struct kinfo_proc **procList, size_t *procCount) { result = kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc), &cnt); if (result == NULL) { + kvm_close(kd); err(1, NULL); return errno; } @@ -187,6 +188,7 @@ psutil_get_proc_list(struct kinfo_proc **procList, size_t *procCount) { size_t mlen = cnt * sizeof(struct kinfo_proc); if ((*procList = malloc(mlen)) == NULL) { + kvm_close(kd); err(1, NULL); return errno; } |