]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Add a test for a bug fix of lha reader.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Thu, 3 Jul 2014 11:58:51 +0000 (20:58 +0900)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Thu, 3 Jul 2014 11:58:51 +0000 (20:58 +0900)
Makefile.am
libarchive/test/CMakeLists.txt
libarchive/test/test_read_format_lha_bugfix_0.c [new file with mode: 0644]
libarchive/test/test_read_format_lha_bugfix_0.lzh.uu [new file with mode: 0644]

index 8a2a55bfb7fed02f070efbb14b68cf0fee5e720b..3aa960df6de920b0c0fa9f68c0d3b5e361bd990d 100644 (file)
@@ -428,6 +428,7 @@ libarchive_test_SOURCES= \
        libarchive/test/test_read_format_isorr_rr_moved.c \
        libarchive/test/test_read_format_isozisofs_bz2.c \
        libarchive/test/test_read_format_lha.c \
+       libarchive/test/test_read_format_lha_bugfix_0.c \
        libarchive/test/test_read_format_lha_filename.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -692,6 +693,7 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu \
        libarchive/test/test_read_format_iso_xorriso.iso.Z.uu \
        libarchive/test/test_read_format_iso_zisofs.iso.Z.uu \
+       libarchive/test/test_read_format_lha_bugfix_0.lzh.uu \
        libarchive/test/test_read_format_lha_filename_cp932.lzh.uu \
        libarchive/test/test_read_format_lha_header0.lzh.uu \
        libarchive/test/test_read_format_lha_header1.lzh.uu \
index 5c1dcc64087917d25813cce08d4e2615dd2619a6..4a761d9aac6836805bbaa5160ca6a1fd844ac3a0 100644 (file)
@@ -128,6 +128,7 @@ IF(ENABLE_TEST)
     test_read_format_isorr_rr_moved.c
     test_read_format_isozisofs_bz2.c
     test_read_format_lha.c
+    test_read_format_lha_bugfix_0.c
     test_read_format_lha_filename.c
     test_read_format_mtree.c
     test_read_format_pax_bz2.c
diff --git a/libarchive/test/test_read_format_lha_bugfix_0.c b/libarchive/test/test_read_format_lha_bugfix_0.c
new file mode 100644 (file)
index 0000000..2b4160b
--- /dev/null
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2014 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD");
+
+DEFINE_TEST(test_read_format_lha_bugfix_0)
+{
+       const char *refname = "test_read_format_lha_bugfix_0.lzh";
+       struct archive_entry *ae;
+       struct archive *a;
+       const void *pv;
+       size_t s;
+       int64_t o;
+
+       extract_reference_file(refname);
+       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));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_open_filename(a, refname, 10240));
+
+       /* Verify directory1.  */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("f", archive_entry_pathname(ae));
+       assertEqualInt(776, archive_entry_size(ae));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_data_block(a, &pv, &s, &o));
+       assertEqualInt(s, 776);
+       assertEqualIntA(a, ARCHIVE_EOF,
+           archive_read_data_block(a, &pv, &s, &o));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+               ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       /* Verify the number of files read. */
+       assertEqualInt(1, archive_file_count(a));
+
+       /* Verify encryption status */
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+               ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_lha_bugfix_0.lzh.uu b/libarchive/test/test_read_format_lha_bugfix_0.lzh.uu
new file mode 100644 (file)
index 0000000..34f5fb5
--- /dev/null
@@ -0,0 +1,19 @@
+begin 644 test_read_format_lha_bugfix_0.lzh
+M+P`M;&@U+7T"```(`P``$D*U4R`"],%5!0``,;<$``%F!0!0I($'`%$4`/4!
+M```#!FS;%+<D!^=^`=/`!Z""`DB`AX+XB@LDGKN]<[KF=V]N7KG9?SGH/]_;
+M^??\_9QIK[?/M_WSX_'^_Y^O7Y\?KU^O']^_W]?C\?U[__[>&?H/SZ_`=2K$
+M-,5VE5(EVT9P)2WPS:$ET@K<D.$0Q)/F;'=16XH>!861T3'*N&!9P1"!)<58
+M77$ZCA;PVAGN>:E@6E`;&<>"ZC!Y63H&,DLG*7"!89A!JAN$L?(RDL_4`*!5
+MFWE%HD>>J)M8]^%^EM_SX;PSL4PVL.5A30:MQ@.E>3">;0[^XNA:([UUF>FV
+MLJS"HLP=\5-Y)HP)8800U81@-`7,)<)ZD6)*P7'5$BBE@NYFR%CS>"PRZ6`Z
+M8JPQ)&7:HGF$^/FQGF_PQ;'VBN?WET90#=W4S(2%Q9+!.>\`MR,`]Y;GQNU*
+MFV]2K+=B$EZ2M6[KKUMXA2,NK[\3?3>^;:NB(+]2)S/?J*C<=Y'\SN?1Z7-T
+M."&"A!R%6"V5"ZI&W[UZFT>T$?;.=#MVH9@V=/!#*$).G2G(Y4.Q<V<03#``
+M@HS1578BY$*L7(JWO.+,)<]G0CMUXL+LL]K/.FY++PI*T3`=^#B^W;)5<PDJ
+MJN28XY'B/IQWM%6-[)WIG%GN^:&Y#/S(M1$X8>*[1AVL?6*_:94#("2J<.Q<
+M<W+CQ&U//BA`E`ZZ59NS[/)O2JS'3GSN.Y:K0/OGN-;YJ1/>2F+D][."[K,$
+M^*>G*P8XG*=--.O:V?F58URE?C"9Q>FRRHW0RHQTQ\`IS.%ZJ:J2YKXH6C:+
+MHAD@<2N;;[H(/YMP]]_/=25P$K"=;&?2)-\6HA5V6U"%Z`/3MMKL6>%KKCGI
+*+1"40KV_/\%`````
+`
+end