From 9374a971445b33c8ba45325833a5d043267ec8b5 Mon Sep 17 00:00:00 2001 From: Thomas Klausner Date: Wed, 30 Dec 2015 12:28:57 +0100 Subject: Call kvm_close() in error cases to avoid resource leak. --- psutil/arch/bsd/netbsd.c | 2 ++ psutil/arch/bsd/openbsd.c | 2 ++ 2 files changed, 4 insertions(+) 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; } -- cgit v1.2.1