Ensure palette is large enough to avoid panics with invalid images that have pixels refering to colors not in the palette

This commit is contained in:
Kovid Goyal
2024-03-22 10:01:20 +05:30
parent e11081ac09
commit e818f01ff2
2 changed files with 2 additions and 2 deletions

View File

@@ -169,7 +169,7 @@ func newScannerRGB(img image.Image, opaque_base NRGBColor) *scanner_rgb {
opaque_base_uint: []uint8{opaque_base.R, opaque_base.G, opaque_base.B}[0:3:3],
}
if img, ok := img.(*image.Paletted); ok {
s.palette = make([]NRGBColor, len(img.Palette))
s.palette = make([]NRGBColor, max(256, len(img.Palette)))
d := make([]uint8, 3)
for i := 0; i < len(img.Palette); i++ {
r, g, b, a := img.Palette[i].RGBA()

View File

@@ -27,7 +27,7 @@ func newScanner(img image.Image) *scanner {
h: img.Bounds().Dy(),
}
if img, ok := img.(*image.Paletted); ok {
s.palette = make([]color.NRGBA, len(img.Palette))
s.palette = make([]color.NRGBA, max(256, len(img.Palette)))
for i := 0; i < len(img.Palette); i++ {
s.palette[i] = color.NRGBAModel.Convert(img.Palette[i]).(color.NRGBA)
}