mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
lib/inflate: fix memory leak in inflate_dynamic() on inflate_codes() failure
When inflate_codes() fails in inflate_dynamic(), the code jumps to the 'out' label which only frees 'll', leaking the Huffman tables 'tl' and 'td'. Restructure the code so that the decoding tables are always freed before reaching the 'out' label. Link: https://lkml.kernel.org/r/20260306161647.2811874-1-objecting@objecting.org Signed-off-by: Josh Law <objecting@objecting.org> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
bc6cc36855
commit
84f24da354
|
|
@ -1009,10 +1009,10 @@ DEBG("dyn5d ");
|
|||
DEBG("dyn6 ");
|
||||
|
||||
/* decompress until an end-of-block code */
|
||||
if (inflate_codes(tl, td, bl, bd)) {
|
||||
if (inflate_codes(tl, td, bl, bd))
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
ret = 0;
|
||||
|
||||
DEBG("dyn7 ");
|
||||
|
||||
|
|
@ -1021,7 +1021,6 @@ DEBG("dyn7 ");
|
|||
huft_free(td);
|
||||
|
||||
DEBG(">");
|
||||
ret = 0;
|
||||
out:
|
||||
free(ll);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user