diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2018-07-19 21:14:53 +0200 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2018-07-19 21:14:53 +0200 |
commit | 2c8c83b9731ff822fad6cc8c670ea5519c366a14 (patch) | |
tree | cab03aa68f36f05a61a8b69340e1df7bcea7e1f0 /libarchive/archive_read_support_format_lha.c | |
parent | a864f9f9bd3f98d5a5891d434c51ebab4c14e253 (diff) | |
download | libarchive-2c8c83b9731ff822fad6cc8c670ea5519c366a14.tar.gz |
Reject LHA archive entries with negative size.
Diffstat (limited to 'libarchive/archive_read_support_format_lha.c')
-rw-r--r-- | libarchive/archive_read_support_format_lha.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libarchive/archive_read_support_format_lha.c b/libarchive/archive_read_support_format_lha.c index b8ef4ae1..95c99bb1 100644 --- a/libarchive/archive_read_support_format_lha.c +++ b/libarchive/archive_read_support_format_lha.c @@ -701,6 +701,12 @@ archive_read_format_lha_read_header(struct archive_read *a, * Prepare variables used to read a file content. */ lha->entry_bytes_remaining = lha->compsize; + if (lha->entry_bytes_remaining < 0) { + archive_set_error(&a->archive, + ARCHIVE_ERRNO_FILE_FORMAT, + "Invalid LHa entry size"); + return (ARCHIVE_FATAL); + } lha->entry_offset = 0; lha->entry_crc_calculated = 0; |