Commit 54243cef authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds

[PATCH] tdfxfb: Fix buffer overrun

The pseudo_palette has room only for 16 entries, but tdfxfb_setcolreg may
attempt to write more.

Coverity Bug 557
Signed-off-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d3015247
...@@ -794,6 +794,7 @@ static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green, ...@@ -794,6 +794,7 @@ static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
break; break;
/* Truecolor has no hardware color palettes. */ /* Truecolor has no hardware color palettes. */
case FB_VISUAL_TRUECOLOR: case FB_VISUAL_TRUECOLOR:
if (regno < 16) {
rgbcol = (CNVT_TOHW( red, info->var.red.length) << rgbcol = (CNVT_TOHW( red, info->var.red.length) <<
info->var.red.offset) | info->var.red.offset) |
(CNVT_TOHW( green, info->var.green.length) << (CNVT_TOHW( green, info->var.green.length) <<
...@@ -803,11 +804,14 @@ static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green, ...@@ -803,11 +804,14 @@ static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
(CNVT_TOHW( transp, info->var.transp.length) << (CNVT_TOHW( transp, info->var.transp.length) <<
info->var.transp.offset); info->var.transp.offset);
par->palette[regno] = rgbcol; par->palette[regno] = rgbcol;
}
break; break;
default: default:
DPRINTK("bad depth %u\n", info->var.bits_per_pixel); DPRINTK("bad depth %u\n", info->var.bits_per_pixel);
break; break;
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment