Skip to content

Commit

Permalink
pvr2fb: fix pseudo_palette array overrun and typecast
Browse files Browse the repository at this point in the history
- the pseudo_palette has only 16 elements. Do not write if regno (the array
  index) is more than 15.
- if using generic drawing libraries, the typecast of pseudo_palette is
  always u32 *

Signed-off-by: Antonino Daplas <[email protected]>
Acked-by: Paul Mundt <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
adaplas authored and Linus Torvalds committed Jul 17, 2007
1 parent 02c2c20 commit a66ad56
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/video/pvr2fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -333,24 +333,25 @@ static int pvr2fb_setcolreg(unsigned int regno, unsigned int red,
((blue & 0xf800) >> 11);

pvr2fb_set_pal_entry(par, regno, tmp);
((u16*)(info->pseudo_palette))[regno] = tmp;
break;
case 24: /* RGB 888 */
red >>= 8; green >>= 8; blue >>= 8;
((u32*)(info->pseudo_palette))[regno] = (red << 16) | (green << 8) | blue;
tmp = (red << 16) | (green << 8) | blue;
break;
case 32: /* ARGB 8888 */
red >>= 8; green >>= 8; blue >>= 8;
tmp = (transp << 24) | (red << 16) | (green << 8) | blue;

pvr2fb_set_pal_entry(par, regno, tmp);
((u32*)(info->pseudo_palette))[regno] = tmp;
break;
default:
pr_debug("Invalid bit depth %d?!?\n", info->var.bits_per_pixel);
return 1;
}

if (regno < 16)
((u32*)(info->pseudo_palette))[regno] = tmp;

return 0;
}

Expand Down

0 comments on commit a66ad56

Please sign in to comment.