On Tue, Dec 11, 2018 at 3:23 AM Pekka Paalanen <[email protected]> wrote:
>
> On Mon, 10 Dec 2018 23:34:11 -0500
> Ilia Mirkin <[email protected]> wrote:
>
> > Noticed when porting this logic to xf86-video-nouveau, and valgrind
> > complained about conditional jump based on uninitialized data.
> >
> > Signed-off-by: Ilia Mirkin <[email protected]>
> > ---
> >
> > memcpy sets conn_id[0..len-1], so conn_id[len] is the one that should
> > get the 0.
>
> Hi,
>
> you're certainly right about memcpy vs. len. I didn't check the type of
> conn_id, but if it's an array of bytes, then
>
> Reviewed-by: Pekka Paalanen <[email protected]>

Thanks! Here are the relevant bits of the function:

    char conn_id[5];
...
    len = conn - (blob_data + 4);
    if (len + 1> 5)
        return -1;
    memcpy(conn_id, blob_data + 4, len);
    conn_id[len] = '\0';
    id = strtoul(conn_id, NULL, 10);

(previously that was conn_id[len+1])

>
>
> Thanks,
> pq
>
> >
> >  hw/xfree86/drivers/modesetting/drmmode_display.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c 
> > b/hw/xfree86/drivers/modesetting/drmmode_display.c
> > index 939f07f8f..5c1b0ea96 100644
> > --- a/hw/xfree86/drivers/modesetting/drmmode_display.c
> > +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
> > @@ -2834,7 +2834,7 @@ static int parse_path_blob(drmModePropertyBlobPtr 
> > path_blob, int *conn_base_id,
> >      if (len + 1> 5)
> >          return -1;
> >      memcpy(conn_id, blob_data + 4, len);
> > -    conn_id[len + 1] = '\0';
> > +    conn_id[len] = '\0';
> >      id = strtoul(conn_id, NULL, 10);
> >
> >      *conn_base_id = id;
>
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to