]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
udf: Fix memory leak
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 8 Jul 2020 02:02:31 +0000 (22:02 -0400)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 29 Jul 2020 14:55:48 +0000 (16:55 +0200)
Fixes: CID 73796
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Reviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>
grub-core/fs/udf.c

index 21ac7f4460d02be1676e802abf55ac597bf498c3..2ac5c1d0048fb3b0df331e7a9c5e0120d391ce37 100644 (file)
@@ -965,8 +965,10 @@ grub_udf_iterate_dir (grub_fshelp_node_t dir,
            return 0;
 
           if (grub_udf_read_icb (dir->data, &dirent.icb, child))
-           return 0;
-
+           {
+             grub_free (child);
+             return 0;
+           }
           if (dirent.characteristics & GRUB_UDF_FID_CHAR_PARENT)
            {
              /* This is the parent directory.  */
@@ -988,11 +990,18 @@ grub_udf_iterate_dir (grub_fshelp_node_t dir,
                                       dirent.file_ident_length,
                                       (char *) raw))
                  != dirent.file_ident_length)
-               return 0;
+               {
+                 grub_free (child);
+                 return 0;
+               }
 
              filename = read_string (raw, dirent.file_ident_length, 0);
              if (!filename)
-               grub_print_error ();
+               {
+                 /* As the hook won't get called. */
+                 grub_free (child);
+                 grub_print_error ();
+               }
 
              if (filename && hook (filename, type, child, hook_data))
                {