From a38b5d4ec437c168aaf066e08e3fd3553d78d253 Mon Sep 17 00:00:00 2001 From: atxr Date: Fri, 23 Feb 2024 18:01:15 +0100 Subject: [PATCH] Free some strucs --- libmineziper/include/libmineziper_huffman_tree.h | 1 + libmineziper/include/libmineziper_zip.h | 2 ++ libmineziper/src/libmineziper_huffman_tree.c | 5 +++++ libmineziper/src/libmineziper_zip.c | 9 +++++++++ 4 files changed, 17 insertions(+) diff --git a/libmineziper/include/libmineziper_huffman_tree.h b/libmineziper/include/libmineziper_huffman_tree.h index 867f2be..570386f 100644 --- a/libmineziper/include/libmineziper_huffman_tree.h +++ b/libmineziper/include/libmineziper_huffman_tree.h @@ -27,6 +27,7 @@ void print_huffman_tree(tree t); tree build_tree(char* bit_lengths, int size); tree build_default_tree(); tree build_default_dist_tree(); +void free_tree(tree t); int next_token(bitstream* bs, tree t); diff --git a/libmineziper/include/libmineziper_zip.h b/libmineziper/include/libmineziper_zip.h index 3ed4de4..6d225b5 100644 --- a/libmineziper/include/libmineziper_zip.h +++ b/libmineziper/include/libmineziper_zip.h @@ -94,6 +94,8 @@ typedef struct zip } zip; zip init_zip(char* data, int size); +void free_zip(zip z); + void get_eocd(zip* out); void get_cdh(zip* out); diff --git a/libmineziper/src/libmineziper_huffman_tree.c b/libmineziper/src/libmineziper_huffman_tree.c index 13f0775..86c87ff 100644 --- a/libmineziper/src/libmineziper_huffman_tree.c +++ b/libmineziper/src/libmineziper_huffman_tree.c @@ -160,3 +160,8 @@ int next_token(bitstream* bs, tree t) return -1; } + +void free_tree(tree t) +{ + free(t.leaves); +} diff --git a/libmineziper/src/libmineziper_zip.c b/libmineziper/src/libmineziper_zip.c index 267f5d5..b42007f 100644 --- a/libmineziper/src/libmineziper_zip.c +++ b/libmineziper/src/libmineziper_zip.c @@ -99,6 +99,9 @@ char* decode_type1_block_vuln(bitstream* bs, char* decoded_data) } } } + + free_tree(tr); + free_tree(tr_dist); } char* decode_type1_block_v2( @@ -164,4 +167,10 @@ int decode_distance_token(bitstream* bs, int token) { int extra = get_bits(bs, extra_bits_distance_codes[token]); return distance_codes[token] + extra; +} + +void free_zip(zip z) +{ + free(z.cdh_filename_length); + free(z.lfh_off); } \ No newline at end of file