diff --git a/libarchive/archive_read_support_compression_lzma.c b/libarchive/archive_read_support_compression_lzma.c index 49749ed..144f1bf 100644 --- a/libarchive/archive_read_support_compression_lzma.c +++ b/libarchive/archive_read_support_compression_lzma.c @@ -119,6 +119,24 @@ lzma_reader_bid(struct archive_reader *self, const void *buff, size_t len) if (buffer[0] != 0x5d) /* Verify first ID byte. */ return (0); bits_checked += 8; + if (len < 2) + return (bits_checked); + + if (buffer[1] != 0x00) + return (0); + bits_checked += 8; + if (len < 3) + return (bits_checked); + + if (buffer[2] != 0x00) + return (0); + bits_checked += 8; + if (len < 6) + return (bits_checked); + + if (buffer[5] != 0x00) + return (0); + bits_checked += 8; return (bits_checked); }