diff options
author | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2014-07-02 21:12:42 +0900 |
---|---|---|
committer | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2014-07-02 21:12:42 +0900 |
commit | cada9e9225fabc26a918573ae30e511a5d0d2fcb (patch) | |
tree | 4407f5466781ee71dc35e0e63156d12d38abba9b /libarchive/archive_read_support_format_lha.c | |
parent | 724f3f918e509ddca60ce62fad696d7621d3623d (diff) | |
download | libarchive-cada9e9225fabc26a918573ae30e511a5d0d2fcb.tar.gz |
Properly set buffer,offset and size when lha format reader returns
ARCHIVE_WAR by getting CRC error.o
Diffstat (limited to 'libarchive/archive_read_support_format_lha.c')
-rw-r--r-- | libarchive/archive_read_support_format_lha.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libarchive/archive_read_support_format_lha.c b/libarchive/archive_read_support_format_lha.c index b88731af..3c565c00 100644 --- a/libarchive/archive_read_support_format_lha.c +++ b/libarchive/archive_read_support_format_lha.c @@ -1390,13 +1390,14 @@ archive_read_format_lha_read_data(struct archive_read *a, lha->entry_unconsumed = 0; } if (lha->end_of_entry) { + r = ARCHIVE_EOF; if (!lha->end_of_entry_cleanup) { if ((lha->setflag & CRC_IS_SET) && lha->crc != lha->entry_crc_calculated) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "LHa data CRC error"); - return (ARCHIVE_WARN); + r = ARCHIVE_WARN; } /* End-of-entry cleanup done. */ @@ -1405,7 +1406,7 @@ archive_read_format_lha_read_data(struct archive_read *a, *offset = lha->entry_offset; *size = 0; *buff = NULL; - return (ARCHIVE_EOF); + return (r); } if (lha->entry_is_compressed) |