From 6fd0da803f77df1fc2940a4fd78177cd1443b3a5 Mon Sep 17 00:00:00 2001 From: Jan Osusky Date: Tue, 22 Nov 2016 18:29:17 +0100 Subject: [PATCH] Add test of GNU tar with GID greater 10000000 octal GNU tar encodes such field as base256 (raw binary). --- libarchive/test/test_compat_gtar.c | 37 ++++ libarchive/test/test_compat_gtar_2.tar.uu | 231 ++++++++++++++++++++++ 2 files changed, 268 insertions(+) create mode 100644 libarchive/test/test_compat_gtar_2.tar.uu diff --git a/libarchive/test/test_compat_gtar.c b/libarchive/test/test_compat_gtar.c index 3d5e456e5..e31e26771 100644 --- a/libarchive/test/test_compat_gtar.c +++ b/libarchive/test/test_compat_gtar.c @@ -106,10 +106,47 @@ test_compat_gtar_1(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } +/* + * test_compat_gtar_2.tar exercises reading of UID > 2097151. + */ +static void +test_compat_gtar_2(void) +{ + char name[] = "test_compat_gtar_2.tar"; + struct archive_entry *ae; + struct archive *a; + int r; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 10240)); + + /* Read first entry. */ + assertEqualIntA(a, ARCHIVE_OK, r = archive_read_next_header(a, &ae)); + if (r != ARCHIVE_OK) { + archive_read_free(a); + return; + } + + /* Check UID and GID */ + assertEqualInt(2097152, archive_entry_uid(ae)); + assertEqualInt(1000, archive_entry_gid(ae)); + + /* Verify the end-of-archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify that the format detection worked. */ + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR); + +} DEFINE_TEST(test_compat_gtar) { test_compat_gtar_1(); + test_compat_gtar_2(); } diff --git a/libarchive/test/test_compat_gtar_2.tar.uu b/libarchive/test/test_compat_gtar_2.tar.uu new file mode 100644 index 000000000..ed2fa5edf --- /dev/null +++ b/libarchive/test/test_compat_gtar_2.tar.uu @@ -0,0 +1,231 @@ +begin 660 test_compat_gtar_2.tar.uu +M9FEL95]W:71H7V)I9U]U:60````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````#`P,#`V-C``@``````@```P,#`Q-S4P`#`P,#`P,#`P,38W +M`#$S,#$T-C