From: Kevin Locke Date: Sat, 11 Jan 2014 23:35:21 +0000 (-0700) Subject: Only consume a second all-null record X-Git-Tag: v3.1.900a~332 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6c076b1c844f41d471c06da1db770efe5518e20;p=thirdparty%2Flibarchive.git Only consume a second all-null record Currently any record following an all-null record will be consumed. This is probably not the intended behavior, as it does not match the comment and consumes/ignores unexpected and unrecognized data. In particular, for the read_concatenated_archives case, it could incorrectly consume a non-null header. Signed-off-by: Kevin Locke --- diff --git a/libarchive/archive_read_support_format_tar.c b/libarchive/archive_read_support_format_tar.c index b39298a10..70d2e12c2 100644 --- a/libarchive/archive_read_support_format_tar.c +++ b/libarchive/archive_read_support_format_tar.c @@ -651,7 +651,7 @@ tar_read_header(struct archive_read *a, struct tar *tar, /* Try to consume a second all-null record, as well. */ tar_flush_unconsumed(a, unconsumed); h = __archive_read_ahead(a, 512, NULL); - if (h != NULL) + if (h != NULL && h[0] == 0 && archive_block_is_null(h)) __archive_read_consume(a, 512); archive_clear_error(&a->archive); if (a->archive.archive_format_name == NULL) {