summaryrefslogtreecommitdiff
path: root/libarchive/archive_read_support_filter_uu.c
diff options
context:
space:
mode:
authorMartin Matuska <martin@matuska.org>2016-12-03 02:16:18 +0100
committerMartin Matuska <martin@matuska.org>2016-12-04 11:20:18 +0100
commit7c2ffc204a37e52375678b902999be4215d790a9 (patch)
treee1cee78c0cc26d6f5154ff7d1989812b8a8c0f1f /libarchive/archive_read_support_filter_uu.c
parent17feb73ffcb0a955c42e1964c47da046976e7734 (diff)
downloadlibarchive-7c2ffc204a37e52375678b902999be4215d790a9.tar.gz
Fix hang in uudecode_filter_read()
Reported-by: OSS-Fuzz issue 16
Diffstat (limited to 'libarchive/archive_read_support_filter_uu.c')
-rw-r--r--libarchive/archive_read_support_filter_uu.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libarchive/archive_read_support_filter_uu.c b/libarchive/archive_read_support_filter_uu.c
index 1d682af2..1084c415 100644
--- a/libarchive/archive_read_support_filter_uu.c
+++ b/libarchive/archive_read_support_filter_uu.c
@@ -511,6 +511,13 @@ read_more:
}
llen = len;
if ((nl == 0) && (uudecode->state != ST_UUEND)) {
+ if (total == 0 && ravail <= 0) {
+ /* There is nothing more to read, fail */
+ archive_set_error(&self->archive->archive,
+ ARCHIVE_ERRNO_FILE_FORMAT,
+ "Missing format data");
+ return (ARCHIVE_FATAL);
+ }
/*
* Save remaining data which does not contain
* NL('\n','\r').