0013-udf-Fix-memory-leak.patch 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. From 748b691761d31bfff7e9d0d210caa606294c2b52 Mon Sep 17 00:00:00 2001
  2. From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  3. Date: Tue, 7 Jul 2020 22:02:31 -0400
  4. Subject: [PATCH] udf: Fix memory leak
  5. MIME-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. Fixes: CID 73796
  9. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  10. Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
  11. Reviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>
  12. Signed-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
  13. ---
  14. grub-core/fs/udf.c | 17 +++++++++++++----
  15. 1 file changed, 13 insertions(+), 4 deletions(-)
  16. diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
  17. index 21ac7f446..2ac5c1d00 100644
  18. --- a/grub-core/fs/udf.c
  19. +++ b/grub-core/fs/udf.c
  20. @@ -965,8 +965,10 @@ grub_udf_iterate_dir (grub_fshelp_node_t dir,
  21. return 0;
  22. if (grub_udf_read_icb (dir->data, &dirent.icb, child))
  23. - return 0;
  24. -
  25. + {
  26. + grub_free (child);
  27. + return 0;
  28. + }
  29. if (dirent.characteristics & GRUB_UDF_FID_CHAR_PARENT)
  30. {
  31. /* This is the parent directory. */
  32. @@ -988,11 +990,18 @@ grub_udf_iterate_dir (grub_fshelp_node_t dir,
  33. dirent.file_ident_length,
  34. (char *) raw))
  35. != dirent.file_ident_length)
  36. - return 0;
  37. + {
  38. + grub_free (child);
  39. + return 0;
  40. + }
  41. filename = read_string (raw, dirent.file_ident_length, 0);
  42. if (!filename)
  43. - grub_print_error ();
  44. + {
  45. + /* As the hook won't get called. */
  46. + grub_free (child);
  47. + grub_print_error ();
  48. + }
  49. if (filename && hook (filename, type, child, hook_data))
  50. {
  51. --
  52. 2.26.2