]> wimlib.net Git - wimlib/blobdiff - src/lzx_decompress.c
Make read_huffsym() return unsigned int
[wimlib] / src / lzx_decompress.c
index dba27665eb278b1361a60f56998fb41ead8a1d45..86c0839038ac0d396acf65ff88c3e62e7e828e69 100644 (file)
@@ -116,7 +116,7 @@ struct lzx_decompressor {
 };
 
 /* Read a Huffman-encoded symbol using the precode.  */
-static inline u16
+static inline unsigned
 read_huffsym_using_precode(struct input_bitstream *istream,
                           const u16 precode_decode_table[])
 {
@@ -125,7 +125,7 @@ read_huffsym_using_precode(struct input_bitstream *istream,
 }
 
 /* Read a Huffman-encoded symbol using the main code.  */
-static inline u16
+static inline unsigned
 read_huffsym_using_maincode(struct input_bitstream *istream,
                            const struct lzx_tables *tables)
 {
@@ -134,7 +134,7 @@ read_huffsym_using_maincode(struct input_bitstream *istream,
 }
 
 /* Read a Huffman-encoded symbol using the length code.  */
-static inline u16
+static inline unsigned
 read_huffsym_using_lencode(struct input_bitstream *istream,
                           const struct lzx_tables *tables)
 {
@@ -143,7 +143,7 @@ read_huffsym_using_lencode(struct input_bitstream *istream,
 }
 
 /* Read a Huffman-encoded symbol using the aligned offset code.  */
-static inline u16
+static inline unsigned
 read_huffsym_using_alignedcode(struct input_bitstream *istream,
                               const struct lzx_tables *tables)
 {
@@ -228,6 +228,8 @@ lzx_read_codeword_lens(struct input_bitstream *istream, u8 *lens, unsigned num_l
                                run_len = 4 + bitstream_read_bits(istream, 1);
                                presym = read_huffsym_using_precode(istream,
                                                                    precode_decode_table);
+                               if (unlikely(presym > 17))
+                                       return -1;
                                len = *len_ptr - presym;
                                if ((s8)len < 0)
                                        len += 17;