fs: ext4: Fix free(NULL)
authorMikhail Ilin <ilin.mikhail.ol@gmail.com>
Tue, 22 Nov 2022 08:00:55 +0000 (11:00 +0300)
committerTom Rini <trini@konsulko.com>
Thu, 8 Dec 2022 14:28:31 +0000 (09:28 -0500)
The 'depth_dirname', 'ptr', 'parent_inode' and 'first_inode' pointers
may be null. Thus, it is necessary to check them before using free() to
avoid free(NULL) cases.

Fixes: 934b14f2bb30 ("ext4: free allocations by parse_path()")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
fs/ext4/ext4_common.c

index 1185cb2..f50de7c 100644 (file)
@@ -850,15 +850,20 @@ end:
 
 fail:
        free(depth_dirname);
-       free(parse_dirname);
-       for (i = 0; i < depth; i++) {
-               if (!ptr[i])
-                       break;
-               free(ptr[i]);
+       if (parse_dirname)
+               free(parse_dirname);
+       if (ptr) {
+               for (i = 0; i < depth; i++) {
+                       if (!ptr[i])
+                               break;
+                       free(ptr[i]);
+               }
+               free(ptr);
        }
-       free(ptr);
-       free(parent_inode);
-       free(first_inode);
+       if (parent_inode)
+               free(parent_inode);
+       if (first_inode)
+               free(first_inode);
 
        return result_inode_no;
 }