From: Dan Williams Date: Thu, 2 Oct 2008 01:49:53 +0000 (-0700) Subject: sysfs_open leaks devnum2devname() result X-Git-Tag: mdadm-3.0-devel2~83 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e4bc070a73716292c1681a86524f46f656f8acb;p=thirdparty%2Fmdadm.git sysfs_open leaks devnum2devname() result Signed-off-by: Dan Williams --- diff --git a/sysfs.c b/sysfs.c index 23d2f18d..58c84e26 100644 --- a/sysfs.c +++ b/sysfs.c @@ -61,8 +61,12 @@ int sysfs_open(int devnum, char *devname, char *attr) { char fname[50]; int fd; + char *mdname = devnum2devname(devnum); - sprintf(fname, "/sys/block/%s/md/", devnum2devname(devnum)); + if (!mdname) + return -1; + + sprintf(fname, "/sys/block/%s/md/", mdname); if (devname) { strcat(fname, devname); strcat(fname, "/"); @@ -71,6 +75,7 @@ int sysfs_open(int devnum, char *devname, char *attr) fd = open(fname, O_RDWR); if (fd < 0 && errno == EACCES) fd = open(fname, O_RDONLY); + free(mdname); return fd; }