diff options
| author | Martin Matuska <mm@FreeBSD.org> | 2018-07-28 23:47:22 +0000 |
|---|---|---|
| committer | Martin Matuska <mm@FreeBSD.org> | 2018-07-28 23:47:22 +0000 |
| commit | 0b7a6fc00bac0c873d5e00bc28ede661abc54f4e (patch) | |
| tree | c23f0dc17d95dd8215e2314876db5a11ebd78578 /libarchive/archive_read_support_format_zip.c | |
| parent | 032a8914c1034da8875307405dfd591a1b96137c (diff) | |
Notes
Diffstat (limited to 'libarchive/archive_read_support_format_zip.c')
| -rw-r--r-- | libarchive/archive_read_support_format_zip.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libarchive/archive_read_support_format_zip.c b/libarchive/archive_read_support_format_zip.c index 784160070dde..18f0d04e5c4e 100644 --- a/libarchive/archive_read_support_format_zip.c +++ b/libarchive/archive_read_support_format_zip.c @@ -511,7 +511,13 @@ process_extra(struct archive_read *a, const char *p, size_t extra_length, struct case 0x5455: { /* Extended time field "UT". */ - int flags = p[offset]; + int flags; + if (datasize == 0) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Incomplete extended time field"); + return ARCHIVE_FAILED; + } + flags = p[offset]; offset++; datasize--; /* Flag bits indicate which dates are present. */ |
