svn commit: r201157 - head/lib/libarchive
Tim Kientzle
kientzle at FreeBSD.org
Tue Dec 29 05:30:23 UTC 2009
Author: kientzle
Date: Tue Dec 29 05:30:23 2009
New Revision: 201157
URL: http://svn.freebsd.org/changeset/base/201157
Log:
Catch decompression failures earlier. In particular, this gives
immediate feedback if we fail to fork an external decompression program.
Modified:
head/lib/libarchive/archive_read.c
Modified: head/lib/libarchive/archive_read.c
==============================================================================
--- head/lib/libarchive/archive_read.c Tue Dec 29 05:28:28 2009 (r201156)
+++ head/lib/libarchive/archive_read.c Tue Dec 29 05:30:23 2009 (r201157)
@@ -354,6 +354,7 @@ build_stream(struct archive_read *a)
int number_bidders, i, bid, best_bid;
struct archive_read_filter_bidder *bidder, *best_bidder;
struct archive_read_filter *filter;
+ ssize_t avail;
int r;
for (;;) {
@@ -392,6 +393,13 @@ build_stream(struct archive_read *a)
free(filter);
return (r);
}
+ /* Verify the filter by asking it for some data. */
+ __archive_read_filter_ahead(filter, 1, &avail);
+ if (avail < 0) {
+ /* If the read failed, bail out now. */
+ free(filter);
+ return (avail);
+ }
a->filter = filter;
}
}
More information about the svn-src-head
mailing list