SUPERNOVA: Fix OOB write in paletteBrightness()

Palette color 255 doesn't seem to be used
This commit is contained in:
Joseph-Eugene Winzer 2017-06-12 11:11:35 +02:00 committed by Thierry Crozat
parent 0c72f52ad8
commit 8e55efa748
2 changed files with 5 additions and 5 deletions

View File

@ -30,7 +30,7 @@ bool MSNImageDecoder::loadStream(Common::SeekableReadStream &stream) {
_encodedImage = new byte[size];
_palette = new byte[717];
g_system->getPaletteManager()->grabPalette(_palette, 16, 240);
g_system->getPaletteManager()->grabPalette(_palette, 16, 239);
byte pal_diff;
byte flag = stream.readByte();

View File

@ -306,20 +306,20 @@ void SupernovaEngine::renderBox(int x, int y, int width, int height, byte color)
void SupernovaEngine::paletteBrightness() {
byte palette[768];
_system->getPaletteManager()->grabPalette(palette, 0, 256);
_system->getPaletteManager()->grabPalette(palette, 0, 255);
for (size_t i = 0; i < 48; ++i) {
palette[i] = (initVGAPalette[i] * _menuBrightness) >> 8;
}
for (size_t i = 48; i < 768; ++i) {
for (size_t i = 0; i < 717; ++i) {
const byte *imagePalette;
if (_image.getPalette()) {
imagePalette = _image.getPalette();
} else {
imagePalette = palette;
}
palette[i] = (imagePalette[i - 48] * _brightness) >> 8;
palette[i + 48] = (imagePalette[i] * _brightness) >> 8;
}
_system->getPaletteManager()->setPalette(palette, 0, 256);
_system->getPaletteManager()->setPalette(palette, 0, 255);
}
void SupernovaEngine::paletteFadeOut() {