hw/core/loader: gunzip(): fix memory leak on error path
authorVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Thu, 27 Jun 2024 16:25:07 +0000 (19:25 +0300)
committerMichael Tokarev <mjt@tls.msk.ru>
Sun, 30 Jun 2024 16:51:44 +0000 (19:51 +0300)
We should call inflateEnd() like on success path to cleanup state in s
variable.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/core/loader.c

index 2f8105d7de51f598a4a409b38b230bede94fa516..a3bea1e718c94e02a52ca852c237af5a124f4a74 100644 (file)
@@ -610,6 +610,7 @@ ssize_t gunzip(void *dst, size_t dstlen, uint8_t *src, size_t srclen)
     r = inflate(&s, Z_FINISH);
     if (r != Z_OK && r != Z_STREAM_END) {
         printf ("Error: inflate() returned %d\n", r);
+        inflateEnd(&s);
         return -1;
     }
     dstbytes = s.next_out - (unsigned char *) dst;