From 86dfdbee1fb97f8e8cfaec9a212d6d27672d661e Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Sun, 26 Apr 2026 17:50:30 -0400 Subject: [PATCH] libarchive: Backport "Fix use of uninitialized values from Huffman table" Backport libarchive commit `1f5454575f` (cab reader: Fix use of uninitialized values from Huffman, 2026-04-23). Add a fuzzing test case to expose this to dynamic analysis tools. --- .../Fuzzing/corpus/archive/cab-huffman-uninit.tar | Bin 0 -> 256 bytes .../libarchive/archive_read_support_format_cab.c | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 Tests/Fuzzing/corpus/archive/cab-huffman-uninit.tar 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 0000000000000000000000000000000000000000..2bcd3fd315f0e62e2ef303ecbd3a09d03bc58751 GIT binary patch literal 256 zcmeYbc6MU`0_NBW(FPV4Mn)hG14BbS10xVRfH_NnB>R75A1Ku0nB|Np;UA1+J;gV_cM7=9wFEItC{ MEnwgPVns$L05M=Q6#xJL literal 0 HcmV?d00001 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;