summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Klausner <tk@giga.or.at>2015-12-30 12:28:57 +0100
committerThomas Klausner <tk@giga.or.at>2015-12-30 12:28:57 +0100
commit9374a971445b33c8ba45325833a5d043267ec8b5 (patch)
treeea454a0125cd2b093984bb35b9334d45e9166f71
parent711efe2a568d90eab671e2848b88fb037e4260b0 (diff)
downloadpsutil-9374a971445b33c8ba45325833a5d043267ec8b5.tar.gz
Call kvm_close() in error cases to avoid resource leak.
-rw-r--r--psutil/arch/bsd/netbsd.c2
-rw-r--r--psutil/arch/bsd/openbsd.c2
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;
}