From: Andres Mejia Date: Sun, 27 Jan 2013 16:32:18 +0000 (-0500) Subject: Add new tests in multivolume RAR seek test case. X-Git-Tag: v3.1.2~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd7335423b77552259fe846158e6642faef747d6;p=thirdparty%2Flibarchive.git Add new tests in multivolume RAR seek test case. --- diff --git a/libarchive/test/test_read_format_rar.c b/libarchive/test/test_read_format_rar.c index bf107bc66..490cc2095 100644 --- a/libarchive/test/test_read_format_rar.c +++ b/libarchive/test/test_read_format_rar.c @@ -1332,6 +1332,12 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files) assertEqualInt(file_size, archive_entry_size(ae)); assertEqualInt(33188, archive_entry_mode(ae)); + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + /* Seek to the end minus 64 bytes */ assertA(file_size - (int)sizeof(buff) == archive_seek_data(a, -sizeof(buff), SEEK_END)); @@ -1359,6 +1365,12 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files) assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1); + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + /* Second header. */ assertA(0 == archive_read_next_header(a, &ae)); assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); @@ -1368,6 +1380,12 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files) assertEqualInt(file_size, archive_entry_size(ae)); assertEqualInt(33188, archive_entry_mode(ae)); + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + /* Seek to the end minus 64 bytes */ assertA(file_size - (int)sizeof(buff) == archive_seek_data(a, file_size - sizeof(buff), SEEK_SET)); @@ -1399,6 +1417,12 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files) assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); assertEqualMem(buff, file_test_txt8, sizeof(file_test_txt5) - 1); + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + /* Test EOF */ assertA(1 == archive_read_next_header(a, &ae)); assertEqualInt(2, archive_file_count(a));