diff --git a/Tests/Fuzzing/corpus/archive/cab-huffman-uninit.tar b/Tests/Fuzzing/corpus/archive/cab-huffman-uninit.tar new file mode 100644 index 0000000000..2bcd3fd315 Binary files /dev/null and b/Tests/Fuzzing/corpus/archive/cab-huffman-uninit.tar differ diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_cab.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_cab.c index 56d1c2bff2..594369468d 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_cab.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_cab.c @@ -3201,6 +3201,10 @@ lzx_make_huffman_table(struct huffman *hf) bitlen = hf->bitlen; len_avail = hf->len_size; hf->tree_used = 0; + /* Initialize table to invalid values */ + for (i = 0; i < tbl_size; i++) { + tbl[i] = (uint16_t)hf->len_size; + } for (i = 0; i < len_avail; i++) { uint16_t *p; int len, cnt;