From: Simon Glass Date: Tue, 2 Dec 2014 20:17:39 +0000 (-0700) Subject: gunzip: Update lenp even on error X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=9c55c54fb474ba5bc005e489639aa06c3c00d012;p=project%2Fbcm63xx%2Fu-boot.git gunzip: Update lenp even on error This allows the caller to easily detect how much of the destination buffer has been used. Signed-off-by: Simon Glass --- diff --git a/lib/gunzip.c b/lib/gunzip.c index 35abfb38e1..f469fcbead 100644 --- a/lib/gunzip.c +++ b/lib/gunzip.c @@ -73,6 +73,7 @@ int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp, int stoponerr, int offset) { z_stream s; + int err = 0; int r; s.zalloc = gzalloc; @@ -92,13 +93,13 @@ int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp, if (stoponerr == 1 && r != Z_STREAM_END && (s.avail_out == 0 || r != Z_BUF_ERROR)) { printf("Error: inflate() returned %d\n", r); - inflateEnd(&s); - return -1; + err = -1; + break; } s.avail_in = *lenp - offset - (int)(s.next_out - (unsigned char*)dst); } while (r == Z_BUF_ERROR); *lenp = s.next_out - (unsigned char *) dst; inflateEnd(&s); - return 0; + return err; }