[PATCH] vbe: Fix malloc size bug

Alan Coopersmith alan.coopersmith at oracle.com
Fri Feb 25 13:35:26 PST 2011


On 02/25/11 10:08 AM, Adam Jackson wrote:
> v2: Slightly more obvious sizing math.
> 
> ==14882== Invalid write of size 2
> ==14882==    at 0x6750267: VBEGetVBEInfo (vbe.c:400)
> ==14882==    by 0x6142064: ??? (in /usr/lib64/xorg/modules/drivers/vesa_drv.so)
> ==14882==    by 0x471895: InitOutput (xf86Init.c:519)
> ==14882==    by 0x422778: main (main.c:205)
> ==14882==  Address 0x4f32fa8 is 72 bytes inside a block of size 73 alloc'd
> ==14882==    at 0x4A0640D: malloc (vg_replace_malloc.c:236)
> ==14882==    by 0x675024B: VBEGetVBEInfo (vbe.c:398)
> ==14882==    by 0x6142064: ??? (in /usr/lib64/xorg/modules/drivers/vesa_drv.so)
> ==14882==    by 0x471895: InitOutput (xf86Init.c:519)
> ==14882==    by 0x422778: main (main.c:205)
> 
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  hw/xfree86/vbe/vbe.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c
> index bcda5ec..04132d9 100644
> --- a/hw/xfree86/vbe/vbe.c
> +++ b/hw/xfree86/vbe/vbe.c
> @@ -395,7 +395,7 @@ VBEGetVBEInfo(vbeInfoPtr pVbe)
>      i = 0;
>      while (modes[i] != 0xffff)
>  	i++;
> -    block->VideoModePtr = malloc(sizeof(CARD16) * i + 1);
> +    block->VideoModePtr = malloc(sizeof(CARD16) * (i + 1));
>      memcpy(block->VideoModePtr, modes, sizeof(CARD16) * i);
>      block->VideoModePtr[i] = 0xffff;
>  

Thanks
Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

-- 
	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System



More information about the xorg-devel mailing list