On Sun, Jan 03, 2016 at 08:43:35AM +1100, Anton Blanchard wrote:
> We have a couple of checks of the form:
> 
>     if (offset+size > totalsize)
>         die();
> 
> We need to check that offset+size doesn't overflow, otherwise the check
> will pass, and we may access past totalsize.
> 
> Found with AFL.
> 
> Signed-off-by: Anton Blanchard <an...@samba.org>
> ---
> 
> I've attached an example device tree, do we want to add binary blobs
> to the test suite?

I've generally avoided it, but I forget exactly why.  Usually I try to
generate the testcases as dts and compile them, but I'm guessing this dtb is
something that shouldn't be possible as good output from dtc.

It would be possible to construct it from test/trees.S, but just
including the binary blob might be simpler.

Certainly I would like to include this testcase into the testsuite,
one way or another.

> diff --git a/flattree.c b/flattree.c
> index bd99fa2..ec14954 100644
> --- a/flattree.c
> +++ b/flattree.c
> @@ -889,7 +889,7 @@ struct boot_info *dt_from_blob(const char *fname)
>  
>       if (version >= 3) {
>               uint32_t size_str = fdt32_to_cpu(fdt->size_dt_strings);
> -             if (off_str+size_str > totalsize)
> +             if ((off_str+size_str < off_str) || (off_str+size_str > 
> totalsize))
>                       die("String table extends past total size\n");
>               inbuf_init(&strbuf, blob + off_str, blob + off_str + size_str);
>       } else {
> @@ -898,7 +898,7 @@ struct boot_info *dt_from_blob(const char *fname)
>  
>       if (version >= 17) {
>               size_dt = fdt32_to_cpu(fdt->size_dt_struct);
> -             if (off_dt+size_dt > totalsize)
> +             if ((off_dt+size_dt < off_dt) || (off_dt+size_dt > totalsize))
>                       die("Structure block extends past total size\n");
>       }
>  



-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature

Reply via email to