]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix hang in uudecode_filter_read()
authorMartin Matuska <martin@matuska.org>
Sat, 3 Dec 2016 01:16:18 +0000 (02:16 +0100)
committerMartin Matuska <martin@matuska.org>
Sun, 4 Dec 2016 10:20:18 +0000 (11:20 +0100)
Reported-by: OSS-Fuzz issue 16
libarchive/archive_read_support_filter_uu.c

index 1d682af29bc6d9187dcf1975ff0f60c1d64c0c65..1084c4154534e2070cfba24bbb4b59597c6e3474 100644 (file)
@@ -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').