tridentfb: fix pseudo_palette array overrun in setcolreg

The pseudo_palette has only 16 elements. Do not write if regno (the array
index) is more than 15.

Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Antonino A. Daplas 2007-07-17 04:05:41 -07:00 committed by Linus Torvalds
parent eb3daa83c2
commit 973d9ab231

View file

@ -984,7 +984,8 @@ static int tridentfb_setcolreg(unsigned regno, unsigned red, unsigned green,
t_outb(green>>10,0x3C9); t_outb(green>>10,0x3C9);
t_outb(blue>>10,0x3C9); t_outb(blue>>10,0x3C9);
} else if (bpp == 16) { /* RGB 565 */ } else if (regno < 16) {
if (bpp == 16) { /* RGB 565 */
u32 col; u32 col;
col = (red & 0xF800) | ((green & 0xFC00) >> 5) | col = (red & 0xF800) | ((green & 0xFC00) >> 5) |
@ -997,6 +998,7 @@ static int tridentfb_setcolreg(unsigned regno, unsigned red, unsigned green,
((red & 0xFF00) << 8) | ((red & 0xFF00) << 8) |
((green & 0xFF00)) | ((green & 0xFF00)) |
((blue & 0xFF00)>>8); ((blue & 0xFF00)>>8);
}
// debug("exit\n"); // debug("exit\n");
return 0; return 0;