Module Name: src Committed By: knakahara Date: Fri Aug 5 06:58:55 UTC 2016
Modified Files: src/usr.sbin/intrctl: intrctl_io.c Log Message: fix CID 1364766: Resource leaks To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/intrctl/intrctl_io.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/intrctl/intrctl_io.c diff -u src/usr.sbin/intrctl/intrctl_io.c:1.2 src/usr.sbin/intrctl/intrctl_io.c:1.3 --- src/usr.sbin/intrctl/intrctl_io.c:1.2 Wed Aug 3 08:28:09 2016 +++ src/usr.sbin/intrctl/intrctl_io.c Fri Aug 5 06:58:55 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: intrctl_io.c,v 1.2 2016/08/03 08:28:09 knakahara Exp $ */ +/* $NetBSD: intrctl_io.c,v 1.3 2016/08/05 06:58:55 knakahara Exp $ */ /* * Copyright (c) 2015 Internet Initiative Japan Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: intrctl_io.c,v 1.2 2016/08/03 08:28:09 knakahara Exp $"); +__RCSID("$NetBSD: intrctl_io.c,v 1.3 2016/08/05 06:58:55 knakahara Exp $"); #include <sys/sysctl.h> #include <sys/intrio.h> @@ -47,16 +47,16 @@ intrctl_io_alloc(int retry) { size_t buf_size; int i, error; - void *buf; + void *buf = NULL; error = sysctlbyname("kern.intr.list", NULL, &buf_size, NULL, 0); if (error < 0) { - return NULL; + goto error; } buf = malloc(buf_size); if (buf == NULL) { - return NULL; + goto error; } for (i = 0; i < retry; i++) { @@ -68,15 +68,16 @@ intrctl_io_alloc(int retry) temp = realloc(buf, buf_size); if (temp == NULL) { - free(buf); - return NULL; + goto error; } buf = temp; } else { - free(buf); - return NULL; + goto error; } } +error: + if (buf != NULL) + free(buf); return NULL; }