diff options
author | Junyong Sun <sunjy516@gmail.com> | 2021-03-02 11:21:55 +0800 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2021-03-01 20:22:56 -0800 |
commit | f0fda11925abef7fd2525a4324cd10d97ee7da4d (patch) | |
tree | ea47ee6a6516744f1396087843e966b37b3679ef | |
parent | 5144f2f71b5b2c358621c09ee80af3049af60641 (diff) | |
download | f2fs-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.c | 11 |
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 } |