Lines Matching +full:test_read_format_rar5_nonempty_dir_stream +full:. +full:rar

3  * All rights reserved.
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
12 * documentation and/or other materials provided with the distribution.
16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 #include "test.h"
28 * help. */
30 #include <archive_crc32.h>
31 #include <archive_endian.h>
38 (void) ae; /* in the test cases. */ \
70 * test data is the same as in the test file. If this test is
72 * or the unpacked data is corrupted. */
83 * value that should be in the unpacked test file. */
123 const char reffile[] = "test_read_format_rar5_stored.rar";
140 PROLOGUE("test_read_format_rar5_stored.rar");
143 assertEqualString("helloworld.txt", archive_entry_pathname(ae));
163 PROLOGUE("test_read_format_rar5_compressed.rar");
166 assertEqualString("test.bin", archive_entry_pathname(ae));
181 PROLOGUE("test_read_format_rar5_multiple_files.rar");
183 /* There should be 4 files inside this test file. Check for their
184 * existence, and also check the contents of those test files. */
187 assertEqualString("test1.bin", archive_entry_pathname(ae));
193 assertEqualString("test2.bin", archive_entry_pathname(ae));
199 assertEqualString("test3.bin", archive_entry_pathname(ae));
205 assertEqualString("test4.bin", archive_entry_pathname(ae));
210 /* There should be no more files in this archive. */
217 * archive instead of a regular archive. The test solid archive contains the
220 * files, so it's able to compress lots of small files more effectively. */
227 PROLOGUE("test_read_format_rar5_multiple_files_solid.rar");
230 assertEqualString("test1.bin", archive_entry_pathname(ae));
236 assertEqualString("test2.bin", archive_entry_pathname(ae));
242 assertEqualString("test3.bin", archive_entry_pathname(ae));
248 assertEqualString("test4.bin", archive_entry_pathname(ae));
260 "test_read_format_rar5_multiarchive.part01.rar",
261 "test_read_format_rar5_multiarchive.part02.rar",
262 "test_read_format_rar5_multiarchive.part03.rar",
263 "test_read_format_rar5_multiarchive.part04.rar",
264 "test_read_format_rar5_multiarchive.part05.rar",
265 "test_read_format_rar5_multiarchive.part06.rar",
266 "test_read_format_rar5_multiarchive.part07.rar",
267 "test_read_format_rar5_multiarchive.part08.rar",
283 "test_read_format_rar5_multiarchive.part01.rar",
284 "test_read_format_rar5_multiarchive.part02.rar",
285 "test_read_format_rar5_multiarchive.part03.rar",
286 "test_read_format_rar5_multiarchive.part04.rar",
287 "test_read_format_rar5_multiarchive.part05.rar",
288 "test_read_format_rar5_multiarchive.part06.rar",
289 "test_read_format_rar5_multiarchive.part07.rar",
290 "test_read_format_rar5_multiarchive.part08.rar",
305 "test_read_format_rar5_multiarchive.part01.rar",
306 "test_read_format_rar5_multiarchive.part02.rar",
307 "test_read_format_rar5_multiarchive.part03.rar",
308 "test_read_format_rar5_multiarchive.part04.rar",
309 "test_read_format_rar5_multiarchive.part05.rar",
310 "test_read_format_rar5_multiarchive.part06.rar",
311 "test_read_format_rar5_multiarchive.part07.rar",
312 "test_read_format_rar5_multiarchive.part08.rar",
329 PROLOGUE("test_read_format_rar5_blake2.rar");
334 * value from archive_read_data(). */
338 /* To be extra pedantic, let's also check crc32 of the poem. */
347 /* This test unpacks a file that uses an ARM filter. The DELTA
349 * test. */
354 PROLOGUE("test_read_format_rar5_arm.rar");
361 * let's still fail the test if the unpacked data is wrong. */
370 const char* fname = "test_read_format_rar5_stored_manyfiles.rar";
374 assertEqualString("make_uue.tcl", archive_entry_pathname(ae));
376 assertEqualString("cebula.txt", archive_entry_pathname(ae));
378 assertEqualString("test.bin", archive_entry_pathname(ae));
385 const char* fname = "test_read_format_rar5_stored_manyfiles.rar";
388 /* Skip first, extract in part rest. */
392 assertEqualString("make_uue.tcl", archive_entry_pathname(ae));
394 assertEqualString("cebula.txt", archive_entry_pathname(ae));
398 assertEqualString("test.bin", archive_entry_pathname(ae));
406 const char* fname = "test_read_format_rar5_stored_manyfiles.rar";
409 /* Extract first, skip rest. */
413 assertEqualString("make_uue.tcl", archive_entry_pathname(ae));
416 assertEqualString("cebula.txt", archive_entry_pathname(ae));
418 assertEqualString("test.bin", archive_entry_pathname(ae));
425 const char* fname = "test_read_format_rar5_stored_manyfiles.rar";
432 assertEqualString("make_uue.tcl", archive_entry_pathname(ae));
435 assertEqualString("cebula.txt", archive_entry_pathname(ae));
438 assertEqualString("test.bin", archive_entry_pathname(ae));
447 "test_read_format_rar5_multiarchive_solid.part01.rar",
448 "test_read_format_rar5_multiarchive_solid.part02.rar",
449 "test_read_format_rar5_multiarchive_solid.part03.rar",
450 "test_read_format_rar5_multiarchive_solid.part04.rar",
456 assertEqualString("cebula.txt", archive_entry_pathname(ae));
460 assertEqualString("test.bin", archive_entry_pathname(ae));
464 assertEqualString("test1.bin", archive_entry_pathname(ae));
468 assertEqualString("test2.bin", archive_entry_pathname(ae));
472 assertEqualString("test3.bin", archive_entry_pathname(ae));
476 assertEqualString("test4.bin", archive_entry_pathname(ae));
480 assertEqualString("test5.bin", archive_entry_pathname(ae));
484 assertEqualString("test6.bin", archive_entry_pathname(ae));
498 "test_read_format_rar5_multiarchive_solid.part01.rar",
499 "test_read_format_rar5_multiarchive_solid.part02.rar",
500 "test_read_format_rar5_multiarchive_solid.part03.rar",
501 "test_read_format_rar5_multiarchive_solid.part04.rar",
507 assertEqualString("cebula.txt", archive_entry_pathname(ae));
509 assertEqualString("test.bin", archive_entry_pathname(ae));
511 assertEqualString("test1.bin", archive_entry_pathname(ae));
513 assertEqualString("test2.bin", archive_entry_pathname(ae));
515 assertEqualString("test3.bin", archive_entry_pathname(ae));
517 assertEqualString("test4.bin", archive_entry_pathname(ae));
519 assertEqualString("test5.bin", archive_entry_pathname(ae));
521 assertEqualString("test6.bin", archive_entry_pathname(ae));
531 "test_read_format_rar5_multiarchive_solid.part01.rar",
532 "test_read_format_rar5_multiarchive_solid.part02.rar",
533 "test_read_format_rar5_multiarchive_solid.part03.rar",
534 "test_read_format_rar5_multiarchive_solid.part04.rar",
540 assertEqualString("cebula.txt", archive_entry_pathname(ae));
543 assertEqualString("test.bin", archive_entry_pathname(ae));
545 assertEqualString("test1.bin", archive_entry_pathname(ae));
547 assertEqualString("test2.bin", archive_entry_pathname(ae));
549 assertEqualString("test3.bin", archive_entry_pathname(ae));
551 assertEqualString("test4.bin", archive_entry_pathname(ae));
553 assertEqualString("test5.bin", archive_entry_pathname(ae));
555 assertEqualString("test6.bin", archive_entry_pathname(ae));
568 "test_read_format_rar5_multiarchive_solid.part01.rar",
569 "test_read_format_rar5_multiarchive_solid.part02.rar",
570 "test_read_format_rar5_multiarchive_solid.part03.rar",
571 "test_read_format_rar5_multiarchive_solid.part04.rar",
577 assertEqualString("cebula.txt", archive_entry_pathname(ae));
579 assertEqualString("test.bin", archive_entry_pathname(ae));
582 assertEqualString("test1.bin", archive_entry_pathname(ae));
584 assertEqualString("test2.bin", archive_entry_pathname(ae));
586 assertEqualString("test3.bin", archive_entry_pathname(ae));
588 assertEqualString("test4.bin", archive_entry_pathname(ae));
590 assertEqualString("test5.bin", archive_entry_pathname(ae));
592 assertEqualString("test6.bin", archive_entry_pathname(ae));
602 "test_read_format_rar5_multiarchive_solid.part01.rar",
603 "test_read_format_rar5_multiarchive_solid.part02.rar",
604 "test_read_format_rar5_multiarchive_solid.part03.rar",
605 "test_read_format_rar5_multiarchive_solid.part04.rar",
611 assertEqualString("cebula.txt", archive_entry_pathname(ae));
613 assertEqualString("test.bin", archive_entry_pathname(ae));
615 assertEqualString("test1.bin", archive_entry_pathname(ae));
618 assertEqualString("test2.bin", archive_entry_pathname(ae));
620 assertEqualString("test3.bin", archive_entry_pathname(ae));
622 assertEqualString("test4.bin", archive_entry_pathname(ae));
624 assertEqualString("test5.bin", archive_entry_pathname(ae));
626 assertEqualString("test6.bin", archive_entry_pathname(ae));
636 "test_read_format_rar5_multiarchive_solid.part01.rar",
637 "test_read_format_rar5_multiarchive_solid.part02.rar",
638 "test_read_format_rar5_multiarchive_solid.part03.rar",
639 "test_read_format_rar5_multiarchive_solid.part04.rar",
645 assertEqualString("cebula.txt", archive_entry_pathname(ae));
647 assertEqualString("test.bin", archive_entry_pathname(ae));
649 assertEqualString("test1.bin", archive_entry_pathname(ae));
651 assertEqualString("test2.bin", archive_entry_pathname(ae));
653 assertEqualString("test3.bin", archive_entry_pathname(ae));
655 assertEqualString("test4.bin", archive_entry_pathname(ae));
657 assertEqualString("test5.bin", archive_entry_pathname(ae));
659 assertEqualString("test6.bin", archive_entry_pathname(ae));
669 const char* reffile = "test_read_format_rar5_solid.rar";
675 assertEqualString("test.bin", archive_entry_pathname(ae));
677 assertEqualString("test1.bin", archive_entry_pathname(ae));
679 assertEqualString("test2.bin", archive_entry_pathname(ae));
681 assertEqualString("test3.bin", archive_entry_pathname(ae));
683 assertEqualString("test4.bin", archive_entry_pathname(ae));
685 assertEqualString("test5.bin", archive_entry_pathname(ae));
687 assertEqualString("test6.bin", archive_entry_pathname(ae));
694 const char* reffile = "test_read_format_rar5_solid.rar";
700 assertEqualString("test.bin", archive_entry_pathname(ae));
703 assertEqualString("test1.bin", archive_entry_pathname(ae));
705 assertEqualString("test2.bin", archive_entry_pathname(ae));
707 assertEqualString("test3.bin", archive_entry_pathname(ae));
709 assertEqualString("test4.bin", archive_entry_pathname(ae));
711 assertEqualString("test5.bin", archive_entry_pathname(ae));
713 assertEqualString("test6.bin", archive_entry_pathname(ae));
720 const char* reffile = "test_read_format_rar5_solid.rar";
726 assertEqualString("test.bin", archive_entry_pathname(ae));
728 assertEqualString("test1.bin", archive_entry_pathname(ae));
731 assertEqualString("test2.bin", archive_entry_pathname(ae));
733 assertEqualString("test3.bin", archive_entry_pathname(ae));
735 assertEqualString("test4.bin", archive_entry_pathname(ae));
737 assertEqualString("test5.bin", archive_entry_pathname(ae));
739 assertEqualString("test6.bin", archive_entry_pathname(ae));
746 const char* reffile = "test_read_format_rar5_solid.rar";
752 assertEqualString("test.bin", archive_entry_pathname(ae));
754 assertEqualString("test1.bin", archive_entry_pathname(ae));
756 assertEqualString("test2.bin", archive_entry_pathname(ae));
758 assertEqualString("test3.bin", archive_entry_pathname(ae));
760 assertEqualString("test4.bin", archive_entry_pathname(ae));
762 assertEqualString("test5.bin", archive_entry_pathname(ae));
764 assertEqualString("test6.bin", archive_entry_pathname(ae));
772 PROLOGUE("test_read_format_rar5_win32.rar");
778 assertEqualString("test.bin", archive_entry_pathname(ae));
782 assertEqualString("test1.bin", archive_entry_pathname(ae));
787 assertEqualString("test2.bin", archive_entry_pathname(ae));
791 assertEqualString("test3.bin", archive_entry_pathname(ae));
795 assertEqualString("test4.bin", archive_entry_pathname(ae));
799 assertEqualString("test5.bin", archive_entry_pathname(ae));
803 assertEqualString("test6.bin", archive_entry_pathname(ae));
811 /* This test uses strange buffer sizes intentionally. */
819 extract_reference_file("test_read_format_rar5_compressed.rar");
823 assertA(0 == archive_read_open_filename(a, "test_read_format_rar5_compressed.rar", 130));
825 assertEqualString("test.bin", archive_entry_pathname(ae));
828 /* File size is 1200 bytes, we're reading it using a buffer of 173 bytes.
829 * Libarchive is configured to use a buffer of 130 bytes. */
835 * c) positive value, meaning how many bytes were read.
855 PROLOGUE("test_read_format_rar5_owner.rar");
858 assertEqualString("root.txt", archive_entry_pathname(ae));
866 assertEqualString("nobody.txt", archive_entry_pathname(ae));
874 assertEqualString("numeric.txt", archive_entry_pathname(ae));
891 PROLOGUE("test_read_format_rar5_symlink.rar");
894 assertEqualString("file.txt", archive_entry_pathname(ae));
901 assertEqualString("symlink.txt", archive_entry_pathname(ae));
903 assertEqualString("file.txt", archive_entry_symlink(ae));
929 PROLOGUE("test_read_format_rar5_hardlink.rar");
932 assertEqualString("file.txt", archive_entry_pathname(ae));
939 assertEqualString("hardlink.txt", archive_entry_pathname(ae));
941 assertEqualString("file.txt", archive_entry_hardlink(ae));
951 PROLOGUE("test_read_format_rar5_extra_field_version.rar");
970 PROLOGUE("test_read_format_rar5_readtables_overflow.rar");
972 /* This archive is invalid. However, processing it shouldn't cause any
973 * buffer overflow errors during reading rar5 tables. */
986 PROLOGUE("test_read_format_rar5_leftshift1.rar");
988 /* This archive is invalid. However, processing it shouldn't cause any
989 * errors related to undefined operations when using -fsanitize. */
1002 PROLOGUE("test_read_format_rar5_leftshift2.rar");
1004 /* This archive is invalid. However, processing it shouldn't cause any
1005 * errors related to undefined operations when using -fsanitize. */
1018 PROLOGUE("test_read_format_rar5_truncated_huff.rar");
1020 /* This archive is invalid. However, processing it shouldn't cause any
1021 * errors related to undefined operations when using -fsanitize. */
1034 PROLOGUE("test_read_format_rar5_invalid_dict_reference.rar");
1036 /* This test should fail on parsing the header. */
1039 /* This archive is invalid. However, processing it shouldn't cause any
1040 * errors related to buffer underflow when using -fsanitize. */
1043 /* This test only cares about not returning success here. */
1053 PROLOGUE("test_read_format_rar5_distance_overflow.rar");
1055 /* This archive is invalid. However, processing it shouldn't cause any
1056 * errors related to variable overflows when using -fsanitize. */
1065 DEFINE_TEST(test_read_format_rar5_nonempty_dir_stream)
1069 PROLOGUE("test_read_format_rar5_nonempty_dir_stream.rar");
1071 /* This archive is invalid. However, processing it shouldn't cause any
1072 * errors related to buffer overflows when using -fsanitize. */
1087 PROLOGUE("test_read_format_rar5_fileattr.rar");
1091 assertEqualString("readonly.txt", archive_entry_pathname(ae));
1103 assertEqualString("hidden.txt", archive_entry_pathname(ae));
1115 assertEqualString("system.txt", archive_entry_pathname(ae));
1127 assertEqualString("ro_hidden.txt", archive_entry_pathname(ae));
1191 PROLOGUE("test_read_format_rar5_different_window_size.rar");
1194 * is invalid. However, the unpacker shouldn't produce any SIGSEGV
1195 * errors during processing. */
1212 PROLOGUE("test_read_format_rar5_arm_filter_on_window_boundary.rar");
1215 * is invalid. However, the unpacker shouldn't produce any SIGSEGV
1216 * errors during processing. */
1227 PROLOGUE("test_read_format_rar5_different_solid_window_size.rar");
1230 * is invalid. However, the unpacker shouldn't produce any SIGSEGV
1231 * errors during processing. */
1248 PROLOGUE("test_read_format_rar5_different_winsize_on_merge.rar");
1251 * is invalid. However, the unpacker shouldn't produce any SIGSEGV
1252 * errors during processing. */
1263 PROLOGUE("test_read_format_rar5_block_size_is_too_small.rar");
1265 /* This file is damaged, so those functions should return failure.
1267 * of those functions. */