In commit 178ac5107389 (affs: Fix memory leaks), fixes were made to
grub_affs_iterate_dir() to prevent memory leaks from occuring after it returns
without freeing node. However, there were still some instances where node was
causing a memory leak when the function returns after calling
grub_affs_create_node(). In this function, new memory is allocated to node but
doesn't get freed until the hook() function is called near the end. Before
hook() is called, node should be freed in grub_affs_create_node() before
returning out of it.

Fixes: 178ac5107389 (affs: Fix memory leaks)
Fixes: CID 73759

Signed-off-by: Alec Brown <alec.r.br...@oracle.com>
---
 grub-core/fs/affs.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c
index cafcd0fba..7b9e62064 100644
--- a/grub-core/fs/affs.c
+++ b/grub-core/fs/affs.c
@@ -370,17 +370,26 @@ grub_affs_create_node (grub_fshelp_node_t dir,
                                  GRUB_DISK_SECTOR_SIZE - 
GRUB_AFFS_FILE_LOCATION,
                                  sizeof ((*node)->di), (char *) &(*node)->di);
            if (err)
-             return 1;
+             {
+               grub_free (*node);
+               return 1;
+             }
            continue;
          }
        default:
-         return 0;
+         {
+           grub_free (*node);
+           return 0;
+         }
        }
       break;
     }
 
   if (nest == 8)
-    return 0;
+    {
+      grub_free (*node);
+      return 0;
+    }
 
   type |= GRUB_FSHELP_CASE_INSENSITIVE;
 
-- 
2.27.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to