aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Axtens <dja@axtens.net>2021-07-06 14:13:40 +1000
committerDaniel Kiper <daniel.kiper@oracle.com>2022-06-07 16:39:32 +0200
commit347880a13c239b4c2811c94c9a7cf78b607332e3 (patch)
tree9390a3169ca8c91b096948266fd8ced41ab884a7
parent5bff31cdb6b93d738f850834e6291df1d0b136fa (diff)
downloadgrub-347880a13c239b4c2811c94c9a7cf78b607332e3.tar.gz
video/readers/png: Refuse to handle multiple image headers
This causes the bitmap to be leaked. Do not permit multiple image headers. Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-rw-r--r--grub-core/video/readers/png.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
index d715c4629..35ae553c8 100644
--- a/grub-core/video/readers/png.c
+++ b/grub-core/video/readers/png.c
@@ -258,6 +258,9 @@ grub_png_decode_image_header (struct grub_png_data *data)
int color_bits;
enum grub_video_blit_format blt;
+ if (data->image_width || data->image_height)
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE, "png: two image headers found");
+
data->image_width = grub_png_get_dword (data);
data->image_height = grub_png_get_dword (data);