On Tue, 25 Mar 2014 12:57:32 +0000
Chris Wilson <ch...@chris-wilson.co.uk> wrote:

> Make sure that the whole BDB section is within the MMIO region prior to
> accessing it contents. That we don't read outside of the secion is left
> up to the individual section parsers.
> 
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/intel_bios.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_bios.c 
> b/drivers/gpu/drm/i915/intel_bios.c
> index de9aabe2d8c2..8ca1cd5b2517 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -49,13 +49,19 @@ find_section(struct bdb_header *bdb, int section_id)
>       total = bdb->bdb_size;
>  
>       /* walk the sections looking for section_id */
> -     while (index < total) {
> +     while (index + 3 < total) {
>               current_id = *(base + index);
>               index++;
> +
>               current_size = *((u16 *)(base + index));
>               index += 2;
> +
> +             if (index + current_size > total)
> +                     return NULL;
> +
>               if (current_id == section_id)
>                       return base + index;
> +
>               index += current_size;
>       }
>  

Oh cool, did we see stuff in the wild where it all went sideways?

-- 
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to