aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunyong Sun <sunjy516@gmail.com>2021-03-02 11:21:55 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2021-03-01 20:22:56 -0800
commitf0fda11925abef7fd2525a4324cd10d97ee7da4d (patch)
treeea47ee6a6516744f1396087843e966b37b3679ef
parent5144f2f71b5b2c358621c09ee80af3049af60641 (diff)
downloadf2fs-tools-f0fda11925abef7fd2525a4324cd10d97ee7da4d.tar.gz
libf2fs: fix memory leak caused by get_rootdev()
memory which malloc for uevent don't free at get_rootdev(), it would cause memory leak, so free it before return. Signed-off-by: Junyong Sun <sunjy516@gmail.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--lib/libf2fs.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index 55fa391..85107ee 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -637,20 +637,25 @@ char *get_rootdev()
ptr = strstr(uevent, "DEVNAME");
if (!ptr)
- return NULL;
+ goto out_free;
ret = sscanf(ptr, "DEVNAME=%s\n", buf);
if (strlen(buf) == 0)
- return NULL;
+ goto out_free;
ret = strlen(buf) + 5;
rootdev = malloc(ret + 1);
if (!rootdev)
- return NULL;
+ goto out_free;
rootdev[ret] = '\0';
snprintf(rootdev, ret + 1, "/dev/%s", buf);
+ free(uevent);
return rootdev;
+
+out_free:
+ free(uevent);
+ return NULL;
#endif
}