summaryrefslogtreecommitdiff
path: root/libarchive/archive_read_support_format_lha.c
diff options
context:
space:
mode:
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>2014-07-02 21:12:42 +0900
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>2014-07-02 21:12:42 +0900
commitcada9e9225fabc26a918573ae30e511a5d0d2fcb (patch)
tree4407f5466781ee71dc35e0e63156d12d38abba9b /libarchive/archive_read_support_format_lha.c
parent724f3f918e509ddca60ce62fad696d7621d3623d (diff)
downloadlibarchive-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.c5
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)