From 9c55c54fb474ba5bc005e489639aa06c3c00d012 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 2 Dec 2014 13:17:39 -0700 Subject: [PATCH] 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 --- lib/gunzip.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/gunzip.c b/lib/gunzip.c index 35abfb3..f469fcb 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; }