libf2fs: fix memory leak caused by get_rootdev()
authorJunyong Sun <sunjy516@gmail.com>
Tue, 2 Mar 2021 03:21:55 +0000 (11:21 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 2 Mar 2021 04:22:56 +0000 (20:22 -0800)
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>
lib/libf2fs.c

index 55fa391..85107ee 100644 (file)
@@ -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
 }