0028-video-readers-jpeg-Do-not-permit-duplicate-SOF0-mark.patch 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. From 8368710fbce5c040227fca8bf10828ad1632f84f Mon Sep 17 00:00:00 2001
  2. From: Daniel Axtens <dja@axtens.net>
  3. Date: Fri, 8 Mar 2024 22:47:20 +1100
  4. Subject: [PATCH] video/readers/jpeg: Do not permit duplicate SOF0 markers in
  5. JPEG
  6. Otherwise a subsequent header could change the height and width
  7. allowing future OOB writes.
  8. Fixes: CVE-2024-45774
  9. Reported-by: Nils Langius <nils@langius.de>
  10. Signed-off-by: Daniel Axtens <dja@axtens.net>
  11. Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
  12. Upstream: 2c34af908ebf4856051ed29e46d88abd2b20387f
  13. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
  14. ---
  15. grub-core/video/readers/jpeg.c | 4 ++++
  16. 1 file changed, 4 insertions(+)
  17. diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c
  18. index ae634fd41..631a89356 100644
  19. --- a/grub-core/video/readers/jpeg.c
  20. +++ b/grub-core/video/readers/jpeg.c
  21. @@ -339,6 +339,10 @@ grub_jpeg_decode_sof (struct grub_jpeg_data *data)
  22. if (grub_errno != GRUB_ERR_NONE)
  23. return grub_errno;
  24. + if (data->image_height != 0 || data->image_width != 0)
  25. + return grub_error (GRUB_ERR_BAD_FILE_TYPE,
  26. + "jpeg: cannot have duplicate SOF0 markers");
  27. +
  28. if (grub_jpeg_get_byte (data) != 8)
  29. return grub_error (GRUB_ERR_BAD_FILE_TYPE,
  30. "jpeg: only 8-bit precision is supported");
  31. --
  32. 2.50.1