]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
sysfs_open leaks devnum2devname() result
authorDan Williams <dan.j.williams@intel.com>
Thu, 2 Oct 2008 01:49:53 +0000 (18:49 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 15 Oct 2008 21:15:52 +0000 (14:15 -0700)
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
sysfs.c

diff --git a/sysfs.c b/sysfs.c
index 23d2f18d87d172fd3e9b5ce8ece71dec71733ae1..58c84e26339e8014027bcea6d722bf87b73b4030 100644 (file)
--- 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;
 }