]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fdisk: fix possible memory leak
authorKarel Zak <kzak@redhat.com>
Tue, 25 Mar 2025 11:44:13 +0000 (12:44 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 3 Apr 2025 12:12:27 +0000 (14:12 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/fdisk.c

index 962eb5ae7f13df357ec21df110760374003bbca5..7c459c734a6e1c98ddfd8748e958dd74e30a1334 100644 (file)
@@ -652,27 +652,24 @@ static int strtosize_sectors(const char *str, unsigned long sector_size,
        size_t len = strlen(str);
        int insec = 0;
        int rc;
+       char *buf = NULL;
 
        if (!len)
                return 0;
 
        if (str[len - 1] == 'S' || str[len - 1] == 's') {
                insec = 1;
-               str = strndup(str, len - 1); /* strip trailing 's' */
+               str = buf = strndup(str, len - 1); /* strip trailing 's' */
                if (!str)
                        return -errno;
        }
 
        rc = strtosize(str, res);
-       if (rc)
-               return rc;
-
-       if (insec) {
+       if (rc == 0 && insec)
                *res *= sector_size;
-               free((void *)str);
-       }
 
-       return 0;
+       free(buf);
+       return rc;
 }
 
 void resize_partition(struct fdisk_context *cxt)