aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Axtens <dja@axtens.net>2021-06-28 14:16:58 +1000
committerDaniel Kiper <daniel.kiper@oracle.com>2022-06-07 16:39:32 +0200
commit768ef2199e0265cf455b154f1a80a612f02274c8 (patch)
treedf97cfaa8b729470c8b8982a2f1dca1f2f54a706
parentd5caac8ab79d068ad9a41030c772d03a4d4fbd7b (diff)
downloadgrub-768ef2199e0265cf455b154f1a80a612f02274c8.tar.gz
video/readers/jpeg: Do not reallocate a given huff table
Fix a memory leak where an invalid file could cause us to reallocate memory for a huffman table we had already allocated memory for. Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-rw-r--r--grub-core/video/readers/jpeg.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c
index 806c56c78..2284a6c06 100644
--- a/grub-core/video/readers/jpeg.c
+++ b/grub-core/video/readers/jpeg.c
@@ -251,6 +251,9 @@ grub_jpeg_decode_huff_table (struct grub_jpeg_data *data)
n += count[i];
id += ac * 2;
+ if (data->huff_value[id] != NULL)
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE,
+ "jpeg: attempt to reallocate huffman table");
data->huff_value[id] = grub_malloc (n);
if (grub_errno)
return grub_errno;