In the function grub_mmap_iterate(), memory is allocated to
"ctx.scanline_events" and "present" but isn't freed when error handling
grub_malloc(). Prior to returning grub_errno, these variables should be freed
to prevent a resource leak.

Fixes: CID 96655

Signed-off-by: Alec Brown <[email protected]>
---
 grub-core/mmap/mmap.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c
index 8f03b7765..7c7d3911c 100644
--- a/grub-core/mmap/mmap.c
+++ b/grub-core/mmap/mmap.c
@@ -242,8 +242,12 @@ grub_mmap_iterate (grub_memory_hook_t hook, void 
*hook_data)
          else
            {
              struct mm_list *n = grub_malloc (sizeof (*n));
-              if (n == NULL)
-                return grub_errno;
+             if (n == NULL)
+               {
+                 grub_free (ctx.scanline_events);
+                 grub_free (present);
+                 return grub_errno;
+               }
 
              n->val = ctx.scanline_events[i].memtype;
              n->present = 1;
-- 
2.27.0


_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to