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>
This commit is contained in:
Daniel Axtens 2021-07-06 14:13:40 +10:00 committed by Julian Andres Klode
parent 907f100c84
commit 5e496e28b3

View File

@ -258,6 +258,9 @@ grub_png_decode_image_header (struct grub_png_data *data)
int color_bits; int color_bits;
enum grub_video_blit_format blt; 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_width = grub_png_get_dword (data);
data->image_height = grub_png_get_dword (data); data->image_height = grub_png_get_dword (data);