diff options
Diffstat (limited to 'archivers/libarchive/files/libarchive/archive_read_support_format_warc.c')
-rw-r--r-- | archivers/libarchive/files/libarchive/archive_read_support_format_warc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_warc.c b/archivers/libarchive/files/libarchive/archive_read_support_format_warc.c index e8753853f3c..c1c54450c39 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_warc.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_warc.c @@ -386,6 +386,11 @@ _warc_read(struct archive_read *a, const void **buf, size_t *bsz, int64_t *off) return (ARCHIVE_EOF); } + if (w->unconsumed) { + __archive_read_consume(a, w->unconsumed); + w->unconsumed = 0U; + } + rab = __archive_read_ahead(a, 1U, &nrd); if (nrd < 0) { *bsz = 0U; @@ -739,8 +744,9 @@ _warc_rdlen(const char *buf, size_t bsz) /* there must be at least one digit */ if (!isdigit((unsigned char)*val)) return -1; + errno = 0; len = strtol(val, &on, 10); - if (on != eol) { + if (errno != 0 || on != eol) { /* line must end here */ return -1; } |