]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
If the temporary file gets truncated for any reason, die
authorTim Kientzle <kientzle@gmail.com>
Sat, 5 Jun 2010 01:51:47 +0000 (21:51 -0400)
committerTim Kientzle <kientzle@gmail.com>
Sat, 5 Jun 2010 01:51:47 +0000 (21:51 -0400)
instead of getting stuck in an infinite loop.

SVN-Revision: 2444

libarchive/archive_write_set_format_xar.c

index ebcd0932d74551e10cb0180e0f81f85847901294..28292d274d2db38f4e11251d93158aba21c5962d 100644 (file)
@@ -1733,6 +1733,11 @@ copy_out(struct archive_write *a, uint64_t offset, uint64_t length)
                            (intmax_t)rs);
                        return (ARCHIVE_FATAL);
                }
+               if (rs == 0) {
+                       archive_set_error(&(a->archive), 0,
+                           "Truncated xar archive");
+                       return (ARCHIVE_FATAL);
+               }
                xar->wbuff_remaining -= rs;
                length -= rs;
                if (xar->wbuff_remaining == 0) {