]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
xen/gunzip: don't leak memory on error paths
authorJan Beulich <jbeulich@suse.com>
Mon, 6 May 2024 08:08:40 +0000 (10:08 +0200)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 9 May 2024 17:19:49 +0000 (18:19 +0100)
While decompression errors are likely going to be fatal to Xen's boot
process anyway, the latest with the goal of doing multiple decompressor
runs it is likely better to avoid leaks even on error paths. All the
more when this way code size actually shrinks a tiny bit.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/common/gzip/inflate.c

index 220d2ff4d9d9ee9016a7cdda083a0eea124981b3..b5b70bfb702f18ed18c9d002641bad51b97b7b6c 100644 (file)
@@ -757,16 +757,14 @@ static int noinline __init inflate_fixed(void)
     }
 
     /* decompress until an end-of-block code */
-    if (inflate_codes(tl, td, bl, bd)) {
-        free(l);
-        return 1;
-    }
+    i = inflate_codes(tl, td, bl, bd);
 
     /* free the decoding tables, return */
     free(l);
     huft_free(tl);
     huft_free(td);
-    return 0;
+
+    return !!i;
 }
 
 /*
@@ -940,19 +938,17 @@ static int noinline __init inflate_dynamic(void)
     DEBG("dyn6 ");
 
     /* decompress until an end-of-block code */
-    if (inflate_codes(tl, td, bl, bd)) {
-        ret = 1;
-        goto out;
-    }
+    ret = !!inflate_codes(tl, td, bl, bd);
 
-    DEBG("dyn7 ");
+    if ( !ret )
+       DEBG("dyn7 ");
 
     /* free the decoding tables, return */
     huft_free(tl);
     huft_free(td);
 
-    DEBG(">");
-    ret = 0;
+    if ( !ret )
+       DEBG(">");
  out:
     free(ll);
     return ret;