From 1e4bc070a73716292c1681a86524f46f656f8acb Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 1 Oct 2008 18:49:53 -0700 Subject: [PATCH] sysfs_open leaks devnum2devname() result Signed-off-by: Dan Williams --- sysfs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; } -- 2.47.2