From: Martin Matuska Date: Sat, 3 Dec 2016 01:16:18 +0000 (+0100) Subject: Fix hang in uudecode_filter_read() X-Git-Tag: v3.3.0~101^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c2ffc204a37e52375678b902999be4215d790a9;p=thirdparty%2Flibarchive.git Fix hang in uudecode_filter_read() Reported-by: OSS-Fuzz issue 16 --- diff --git a/libarchive/archive_read_support_filter_uu.c b/libarchive/archive_read_support_filter_uu.c index 1d682af29..1084c4154 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').