From a6c076b1c844f41d471c06da1db770efe5518e20 Mon Sep 17 00:00:00 2001 From: Kevin Locke Date: Sat, 11 Jan 2014 16:35:21 -0700 Subject: [PATCH] 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 --- libarchive/archive_read_support_format_tar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { -- 2.47.2