[U-Boot] [PATCH] Fix gunzip to work for any gzipped uImage size Signed-off-by: Catalin Radu <Catalin at VirtualMetrix.com>

Sergei Shtylyov sshtylyov at mvista.com
Thu Feb 3 13:57:01 CET 2011


Hello.

On 02-02-2011 19:41, Catalin Radu wrote:

> diff --git a/lib/gunzip.c b/lib/gunzip.c
> index 482a476..18cb45b 100644
> --- a/lib/gunzip.c
> +++ b/lib/gunzip.c
> @@ -106,12 +106,16 @@ int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
>   	s.avail_in = *lenp - offset;
>   	s.next_out = dst;
>   	s.avail_out = dstlen;
> -	r = inflate(&s, Z_FINISH);
> -	if ((r != Z_STREAM_END)&&  (stoponerr==1)) {
> -		printf ("Error: inflate() returned %d\n", r);
> -		inflateEnd(&s);
> -		return (-1);
> -	}
> +    do {
> +        r = inflate(&s, Z_FINISH);
> +        if ((r != Z_STREAM_END)&&  (r != Z_BUF_ERROR)&&  (stoponerr==1)) {
> +            printf ("Error: inflate() returned %d\n", r);
> +            inflateEnd(&s);
> +            return (-1);
> +        }
> +        s.avail_in = *lenp - offset - (int)(s.next_out - (unsigned char*)dst);
> +        s.avail_out = dstlen;
> +    } while (r == Z_BUF_ERROR);

    Don't use spaces for indenting, only tabs.

WBR, Sergei


More information about the U-Boot mailing list