Fix: do not allow more palette colours than there are indices for the colours

Or: do not pass unchecked size from BMP file into memory allocation
pull/474/head
Rubidium 1 year ago committed by rubidium42
parent 3af2c7fff6
commit a0694759a1

@ -367,7 +367,12 @@ bool BmpReadHeader(BmpBuffer *buffer, BmpInfo *info, BmpData *data)
info->palette_size = ReadDword(buffer); // number of colours in palette
SkipBytes(buffer, header_size - 16); // skip the end of info header
}
if (info->palette_size == 0) info->palette_size = 1 << info->bpp;
uint maximum_palette_size = 1U << info->bpp;
if (info->palette_size == 0) info->palette_size = maximum_palette_size;
/* More palette colours than palette indices is not supported. */
if (info->palette_size > maximum_palette_size) return false;
data->palette = CallocT<Colour>(info->palette_size);

Loading…
Cancel
Save