]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Add new tests in multivolume RAR seek test case.
authorAndres Mejia <amejia004@gmail.com>
Sun, 27 Jan 2013 16:32:18 +0000 (11:32 -0500)
committerAndres Mejia <amejia004@gmail.com>
Sun, 27 Jan 2013 16:32:18 +0000 (11:32 -0500)
libarchive/test/test_read_format_rar.c

index bf107bc661fcadc8e029fa2ebe819f13f0d82d91..490cc209588df0e8072a42506763562ad38b0e86 100644 (file)
@@ -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));