libarchive-static 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/extconf.rb +2 -9
- data/ext/libarchive-0.1.1/ext/archive_read_support_compression.c +6 -6
- data/ext/libarchive-0.1.1/ext/archive_read_support_compression.o +0 -0
- data/ext/libarchive-0.1.1/ext/archive_read_support_format.o +0 -0
- data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.c +1 -1
- data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.o +0 -0
- data/ext/libarchive-0.1.1/ext/archive_write_set_compression.c +5 -5
- data/ext/libarchive-0.1.1/ext/archive_write_set_compression.o +0 -0
- data/ext/libarchive-0.1.1/ext/config.h +23 -0
- data/ext/libarchive-0.1.1/ext/config.log +230 -0
- data/ext/libarchive-0.1.1/ext/config.status +671 -0
- data/ext/libarchive-0.1.1/ext/libarchive.c +1 -1
- data/ext/libarchive-0.1.1/ext/libarchive.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_archive.c +7 -7
- data/ext/libarchive-0.1.1/ext/libarchive_archive.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_entry.c +6 -0
- data/ext/libarchive-0.1.1/ext/libarchive_entry.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_reader.c +6 -4
- data/ext/libarchive-0.1.1/ext/libarchive_reader.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_ruby.so +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_win32.h +1 -1
- data/ext/libarchive-0.1.1/ext/libarchive_writer.c +2 -2
- data/ext/libarchive-0.1.1/ext/libarchive_writer.o +0 -0
- data/ext/libarchive-3.6.2/Makefile.in +16892 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_append_compile_flags.m4 +67 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_append_flag.m4 +71 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_check_compile_flag.m4 +74 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_require_defined.m4 +37 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/check_stdcall_func.m4 +0 -0
- data/ext/libarchive-3.6.2/build/autoconf/compile +348 -0
- data/ext/libarchive-3.6.2/build/autoconf/config.guess +1754 -0
- data/ext/libarchive-3.6.2/build/autoconf/config.rpath +696 -0
- data/ext/libarchive-3.6.2/build/autoconf/config.sub +1890 -0
- data/ext/libarchive-3.6.2/build/autoconf/depcomp +791 -0
- data/ext/libarchive-3.6.2/build/autoconf/iconv.m4 +271 -0
- data/ext/libarchive-3.6.2/build/autoconf/install-sh +541 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/la_uid_t.m4 +0 -0
- data/ext/libarchive-3.6.2/build/autoconf/lib-ld.m4 +109 -0
- data/ext/libarchive-3.6.2/build/autoconf/lib-link.m4 +777 -0
- data/ext/libarchive-3.6.2/build/autoconf/lib-prefix.m4 +224 -0
- data/ext/libarchive-3.6.2/build/autoconf/ltmain.sh +11251 -0
- data/ext/libarchive-3.6.2/build/autoconf/m4_ax_compile_check_sizeof.m4 +115 -0
- data/ext/libarchive-3.6.2/build/autoconf/missing +215 -0
- data/ext/libarchive-3.6.2/build/autoconf/test-driver +153 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/pkgconfig/libarchive.pc.in +4 -1
- data/ext/libarchive-3.6.2/config.h.in +1504 -0
- data/ext/libarchive-3.6.2/configure +25558 -0
- data/ext/libarchive-3.6.2/libarchive/archive.h +1212 -0
- data/ext/libarchive-3.6.2/libarchive/archive_acl.c +2097 -0
- data/ext/libarchive-3.6.2/libarchive/archive_acl_private.h +83 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2.h +197 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2_impl.h +161 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2s_ref.c +369 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2sp_ref.c +361 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_check_magic.c +63 -22
- data/ext/libarchive-3.6.2/libarchive/archive_cmdline.c +227 -0
- data/ext/libarchive-3.6.2/libarchive/archive_cmdline_private.h +47 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_crc32.h +17 -0
- data/ext/libarchive-3.6.2/libarchive/archive_cryptor.c +534 -0
- data/ext/libarchive-3.6.2/libarchive/archive_cryptor_private.h +188 -0
- data/ext/libarchive-3.6.2/libarchive/archive_digest.c +1505 -0
- data/ext/libarchive-3.6.2/libarchive/archive_digest_private.h +416 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_darwin.c +559 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_freebsd.c +712 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_linux.c +760 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_sunos.c +824 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_endian.h +48 -15
- data/ext/libarchive-3.6.2/libarchive/archive_entry.c +2149 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry.h +305 -106
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_bhfi.c +5 -4
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_stat.c +9 -3
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_link_resolver.c +104 -62
- data/ext/libarchive-3.6.2/libarchive/archive_entry_locale.h +92 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_private.h +65 -49
- data/ext/libarchive-3.6.2/libarchive/archive_entry_sparse.c +156 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_stat.c +6 -6
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_strmode.c +1 -1
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_xattr.c +4 -6
- data/ext/libarchive-3.6.2/libarchive/archive_getdate.c +1165 -0
- data/ext/libarchive-3.6.2/libarchive/archive_getdate.h +39 -0
- data/ext/libarchive-3.6.2/libarchive/archive_hmac.c +334 -0
- data/ext/libarchive-3.6.2/libarchive/archive_hmac_private.h +117 -0
- data/ext/libarchive-3.6.2/libarchive/archive_match.c +1875 -0
- data/ext/libarchive-3.6.2/libarchive/archive_openssl_evp_private.h +53 -0
- data/ext/libarchive-3.6.2/libarchive/archive_openssl_hmac_private.h +54 -0
- data/ext/libarchive-3.6.2/libarchive/archive_options.c +218 -0
- data/ext/libarchive-3.6.2/libarchive/archive_options_private.h +51 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.c +337 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.h +49 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.c +463 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.h +52 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_platform.h +77 -9
- data/ext/libarchive-3.6.2/libarchive/archive_platform_acl.h +55 -0
- data/ext/libarchive-3.6.2/libarchive/archive_platform_xattr.h +47 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd7.c +1168 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd7_private.h +119 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd8.c +1287 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd8_private.h +148 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd_private.h +151 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_private.h +74 -18
- data/ext/libarchive-3.6.2/libarchive/archive_random.c +272 -0
- data/ext/libarchive-3.6.2/libarchive/archive_random_private.h +36 -0
- data/ext/libarchive-3.6.2/libarchive/archive_rb.c +709 -0
- data/ext/libarchive-3.6.2/libarchive/archive_rb.h +113 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read.c +1756 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_add_passphrase.c +190 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_append_filter.c +204 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_data_into_fd.c +64 -18
- data/ext/libarchive-3.6.2/libarchive/archive_read_disk_entry_from_file.c +1086 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_disk_posix.c +2732 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_private.h +40 -4
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_set_standard_lookup.c +21 -11
- data/ext/libarchive-3.6.2/libarchive/archive_read_disk_windows.c +2479 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_extract.c +60 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_extract.c → libarchive-3.6.2/libarchive/archive_read_extract2.c} +34 -61
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_fd.c +70 -49
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_file.c +38 -23
- data/ext/libarchive-3.6.2/libarchive/archive_read_open_filename.c +586 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_memory.c +58 -28
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_private.h +127 -59
- data/ext/libarchive-3.6.2/libarchive/archive_read_set_format.c +117 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_set_options.c +133 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_all.c → libarchive-3.6.2/libarchive/archive_read_support_filter_all.c} +35 -10
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_by_code.c +83 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_bzip2.c → libarchive-3.6.2/libarchive/archive_read_support_filter_bzip2.c} +38 -26
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_compress.c → libarchive-3.6.2/libarchive/archive_read_support_filter_compress.c} +52 -44
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_grzip.c +112 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_gzip.c → libarchive-3.6.2/libarchive/archive_read_support_filter_gzip.c} +108 -37
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lrzip.c +122 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lz4.c +742 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lzop.c +499 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_none.c → libarchive-3.6.2/libarchive/archive_read_support_filter_none.c} +15 -3
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_program.c → libarchive-3.6.2/libarchive/archive_read_support_filter_program.c} +114 -77
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_rpm.c → libarchive-3.6.2/libarchive/archive_read_support_filter_rpm.c} +31 -31
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_uu.c → libarchive-3.6.2/libarchive/archive_read_support_filter_uu.c} +141 -85
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_xz.c → libarchive-3.6.2/libarchive/archive_read_support_filter_xz.c} +369 -284
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_zstd.c +297 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_7zip.c +3900 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_all.c +89 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_ar.c +126 -72
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_by_code.c +92 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cab.c +3228 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cpio.c +1104 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_empty.c +14 -11
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_iso9660.c +990 -541
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_lha.c +2916 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_mtree.c +2150 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar.c +3797 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar5.c +4251 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_raw.c +38 -31
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_tar.c +1157 -629
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_warc.c +848 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_xar.c +439 -258
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_zip.c +4270 -0
- data/ext/libarchive-3.6.2/libarchive/archive_string.c +4240 -0
- data/ext/libarchive-3.6.2/libarchive/archive_string.h +243 -0
- data/ext/libarchive-3.6.2/libarchive/archive_string_composition.h +2292 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_string_sprintf.c +44 -16
- data/ext/libarchive-3.6.2/libarchive/archive_util.c +655 -0
- data/ext/libarchive-3.6.2/libarchive/archive_version_details.c +151 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_virtual.c +85 -16
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.c +214 -541
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.h +74 -106
- data/ext/libarchive-3.6.2/libarchive/archive_write.c +828 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter.c +72 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_b64encode.c +304 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_by_name.c +77 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_bzip2.c +401 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_write_set_compression_compress.c → libarchive-3.6.2/libarchive/archive_write_add_filter_compress.c} +86 -131
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_grzip.c +135 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_gzip.c +442 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lrzip.c +197 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lz4.c +700 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lzop.c +478 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_support_format_all.c → libarchive-3.6.2/libarchive/archive_write_add_filter_none.c} +11 -11
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_program.c +391 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_uuencode.c +295 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_xz.c +545 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_zstd.c +418 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_disk_posix.c +4711 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_private.h +9 -2
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_set_standard_lookup.c +30 -29
- data/ext/libarchive-3.6.2/libarchive/archive_write_disk_windows.c +2842 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_fd.c +15 -10
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_file.c +15 -9
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_filename.c +128 -20
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_memory.c +7 -18
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_private.h +72 -29
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format.c +56 -3
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_7zip.c +2322 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ar.c +54 -34
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_by_name.c +20 -2
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio.c +11 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_binary.c +610 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_newc.c +457 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_odc.c +500 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_filter_by_ext.c +142 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_gnutar.c +755 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_iso9660.c +8165 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_mtree.c +2217 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_pax.c +1049 -387
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_private.h +42 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_raw.c +125 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_shar.c +62 -47
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ustar.c +279 -108
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_v7tar.c +638 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_warc.c +453 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_xar.c +3259 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_zip.c +1704 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_options.c +130 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_passphrase.c +95 -0
- data/ext/libarchive-3.6.2/libarchive/archive_xxhash.h +48 -0
- data/ext/libarchive-3.6.2/libarchive/config_freebsd.h +271 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/filter_fork.h +10 -5
- data/ext/{libarchive-2.8.4/libarchive/filter_fork.c → libarchive-3.6.2/libarchive/filter_fork_posix.c} +98 -19
- data/ext/libarchive-3.6.2/libarchive/filter_fork_windows.c +236 -0
- data/ext/libarchive-3.6.2/libarchive/xxhash.c +525 -0
- data/ext/libarchive-static-makefile +144 -80
- data/ext/libarchive-static-wrapper-makefile +1 -1
- data/ext/zlib-1.2.13/Makefile.in +404 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/adler32.c +51 -34
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/compress.c +27 -21
- data/ext/zlib-1.2.13/configure +922 -0
- data/ext/zlib-1.2.13/crc32.c +1125 -0
- data/ext/zlib-1.2.13/crc32.h +9446 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.c +842 -459
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.h +37 -33
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzclose.c +0 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzguts.h +103 -16
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzlib.c +155 -53
- data/ext/zlib-1.2.13/gzread.c +650 -0
- data/ext/zlib-1.2.13/gzwrite.c +677 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/infback.c +24 -12
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.c +49 -66
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.h +0 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffixed.h +3 -3
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.c +209 -94
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.h +9 -5
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.c +24 -50
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.h +1 -1
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.c +135 -198
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.h +0 -0
- data/ext/zlib-1.2.13/uncompr.c +93 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zconf.h +182 -63
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zlib.h +617 -295
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.c +50 -41
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.h +83 -82
- metadata +241 -133
- data/ext/libarchive-0.1.1/libarchive.c +0 -1762
- data/ext/libarchive-2.8.4/Makefile.in +0 -7076
- data/ext/libarchive-2.8.4/build/autoconf/compile +0 -143
- data/ext/libarchive-2.8.4/build/autoconf/config.guess +0 -1502
- data/ext/libarchive-2.8.4/build/autoconf/config.sub +0 -1708
- data/ext/libarchive-2.8.4/build/autoconf/depcomp +0 -630
- data/ext/libarchive-2.8.4/build/autoconf/install-sh +0 -291
- data/ext/libarchive-2.8.4/build/autoconf/ltmain.sh +0 -8406
- data/ext/libarchive-2.8.4/build/autoconf/missing +0 -376
- data/ext/libarchive-2.8.4/config.h.in +0 -772
- data/ext/libarchive-2.8.4/configure +0 -17916
- data/ext/libarchive-2.8.4/libarchive/archive.h +0 -741
- data/ext/libarchive-2.8.4/libarchive/archive_entry.c +0 -2202
- data/ext/libarchive-2.8.4/libarchive/archive_hash.h +0 -281
- data/ext/libarchive-2.8.4/libarchive/archive_read.c +0 -1249
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk.c +0 -198
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk_entry_from_file.c +0 -570
- data/ext/libarchive-2.8.4/libarchive/archive_read_open_filename.c +0 -272
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_cpio.c +0 -777
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_mtree.c +0 -1304
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_zip.c +0 -903
- data/ext/libarchive-2.8.4/libarchive/archive_string.c +0 -453
- data/ext/libarchive-2.8.4/libarchive/archive_string.h +0 -148
- data/ext/libarchive-2.8.4/libarchive/archive_util.c +0 -391
- data/ext/libarchive-2.8.4/libarchive/archive_write.c +0 -466
- data/ext/libarchive-2.8.4/libarchive/archive_write_disk.c +0 -2628
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_bzip2.c +0 -408
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_gzip.c +0 -477
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_none.c +0 -257
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_program.c +0 -347
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_xz.c +0 -438
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio.c +0 -344
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio_newc.c +0 -295
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_mtree.c +0 -1050
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_zip.c +0 -667
- data/ext/libarchive-2.8.4/libarchive/config_freebsd.h +0 -154
- data/ext/libarchive-2.8.4/libarchive/filter_fork_windows.c +0 -113
- data/ext/zlib-1.2.5/Makefile.in +0 -257
- data/ext/zlib-1.2.5/configure +0 -596
- data/ext/zlib-1.2.5/crc32.c +0 -442
- data/ext/zlib-1.2.5/crc32.h +0 -441
- data/ext/zlib-1.2.5/example.c +0 -565
- data/ext/zlib-1.2.5/gzread.c +0 -653
- data/ext/zlib-1.2.5/gzwrite.c +0 -531
- data/ext/zlib-1.2.5/minigzip.c +0 -440
- data/ext/zlib-1.2.5/uncompr.c +0 -59
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
/*-
|
|
2
|
+
* Copyright (c) 2003-2007 Tim Kientzle
|
|
3
|
+
* Copyright (c) 2012 Michihiro NAKAJIMA
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
*
|
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
|
7
|
+
* modification, are permitted provided that the following conditions
|
|
8
|
+
* are met:
|
|
9
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
10
|
+
* notice, this list of conditions and the following disclaimer.
|
|
11
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
12
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
13
|
+
* documentation and/or other materials provided with the distribution.
|
|
14
|
+
*
|
|
15
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
|
16
|
+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
17
|
+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
18
|
+
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
19
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
20
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
21
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
22
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
24
|
+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#include "archive_platform.h"
|
|
28
|
+
|
|
29
|
+
__FBSDID("$FreeBSD$");
|
|
30
|
+
|
|
31
|
+
#ifdef HAVE_UNISTD_H
|
|
32
|
+
#include <unistd.h>
|
|
33
|
+
#endif
|
|
34
|
+
#ifdef HAVE_ERRNO_H
|
|
35
|
+
#include <errno.h>
|
|
36
|
+
#endif
|
|
37
|
+
#ifdef HAVE_STDLIB_H
|
|
38
|
+
#include <stdlib.h>
|
|
39
|
+
#endif
|
|
40
|
+
#ifdef HAVE_STRING_H
|
|
41
|
+
#include <string.h>
|
|
42
|
+
#endif
|
|
43
|
+
#ifdef HAVE_UNISTD_H
|
|
44
|
+
#include <unistd.h>
|
|
45
|
+
#endif
|
|
46
|
+
#ifdef HAVE_LZO_LZOCONF_H
|
|
47
|
+
#include <lzo/lzoconf.h>
|
|
48
|
+
#endif
|
|
49
|
+
#ifdef HAVE_LZO_LZO1X_H
|
|
50
|
+
#include <lzo/lzo1x.h>
|
|
51
|
+
#endif
|
|
52
|
+
#ifdef HAVE_ZLIB_H
|
|
53
|
+
#include <zlib.h> /* for crc32 and adler32 */
|
|
54
|
+
#endif
|
|
55
|
+
|
|
56
|
+
#include "archive.h"
|
|
57
|
+
#if !defined(HAVE_ZLIB_H) &&\
|
|
58
|
+
defined(HAVE_LZO_LZOCONF_H) && defined(HAVE_LZO_LZO1X_H)
|
|
59
|
+
#include "archive_crc32.h"
|
|
60
|
+
#endif
|
|
61
|
+
#include "archive_endian.h"
|
|
62
|
+
#include "archive_private.h"
|
|
63
|
+
#include "archive_read_private.h"
|
|
64
|
+
|
|
65
|
+
#ifndef HAVE_ZLIB_H
|
|
66
|
+
#define adler32 lzo_adler32
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
#define LZOP_HEADER_MAGIC "\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a"
|
|
70
|
+
#define LZOP_HEADER_MAGIC_LEN 9
|
|
71
|
+
|
|
72
|
+
#if defined(HAVE_LZO_LZOCONF_H) && defined(HAVE_LZO_LZO1X_H)
|
|
73
|
+
struct read_lzop {
|
|
74
|
+
unsigned char *out_block;
|
|
75
|
+
size_t out_block_size;
|
|
76
|
+
int64_t total_out;
|
|
77
|
+
int flags;
|
|
78
|
+
uint32_t compressed_cksum;
|
|
79
|
+
uint32_t uncompressed_cksum;
|
|
80
|
+
size_t compressed_size;
|
|
81
|
+
size_t uncompressed_size;
|
|
82
|
+
size_t unconsumed_bytes;
|
|
83
|
+
char in_stream;
|
|
84
|
+
char eof; /* True = found end of compressed data. */
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
#define FILTER 0x0800
|
|
88
|
+
#define CRC32_HEADER 0x1000
|
|
89
|
+
#define EXTRA_FIELD 0x0040
|
|
90
|
+
#define ADLER32_UNCOMPRESSED 0x0001
|
|
91
|
+
#define ADLER32_COMPRESSED 0x0002
|
|
92
|
+
#define CRC32_UNCOMPRESSED 0x0100
|
|
93
|
+
#define CRC32_COMPRESSED 0x0200
|
|
94
|
+
#define MAX_BLOCK_SIZE (64 * 1024 * 1024)
|
|
95
|
+
|
|
96
|
+
static ssize_t lzop_filter_read(struct archive_read_filter *, const void **);
|
|
97
|
+
static int lzop_filter_close(struct archive_read_filter *);
|
|
98
|
+
#endif
|
|
99
|
+
|
|
100
|
+
static int lzop_bidder_bid(struct archive_read_filter_bidder *,
|
|
101
|
+
struct archive_read_filter *);
|
|
102
|
+
static int lzop_bidder_init(struct archive_read_filter *);
|
|
103
|
+
|
|
104
|
+
static const struct archive_read_filter_bidder_vtable
|
|
105
|
+
lzop_bidder_vtable = {
|
|
106
|
+
.bid = lzop_bidder_bid,
|
|
107
|
+
.init = lzop_bidder_init,
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
int
|
|
111
|
+
archive_read_support_filter_lzop(struct archive *_a)
|
|
112
|
+
{
|
|
113
|
+
struct archive_read *a = (struct archive_read *)_a;
|
|
114
|
+
|
|
115
|
+
if (__archive_read_register_bidder(a, NULL, NULL,
|
|
116
|
+
&lzop_bidder_vtable) != ARCHIVE_OK)
|
|
117
|
+
return (ARCHIVE_FATAL);
|
|
118
|
+
|
|
119
|
+
/* Signal the extent of lzop support with the return value here. */
|
|
120
|
+
#if defined(HAVE_LZO_LZOCONF_H) && defined(HAVE_LZO_LZO1X_H)
|
|
121
|
+
return (ARCHIVE_OK);
|
|
122
|
+
#else
|
|
123
|
+
/* Return ARCHIVE_WARN since this always uses an external program. */
|
|
124
|
+
archive_set_error(_a, ARCHIVE_ERRNO_MISC,
|
|
125
|
+
"Using external lzop program for lzop decompression");
|
|
126
|
+
return (ARCHIVE_WARN);
|
|
127
|
+
#endif
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/*
|
|
131
|
+
* Bidder just verifies the header and returns the number of verified bits.
|
|
132
|
+
*/
|
|
133
|
+
static int
|
|
134
|
+
lzop_bidder_bid(struct archive_read_filter_bidder *self,
|
|
135
|
+
struct archive_read_filter *filter)
|
|
136
|
+
{
|
|
137
|
+
const unsigned char *p;
|
|
138
|
+
ssize_t avail;
|
|
139
|
+
|
|
140
|
+
(void)self; /* UNUSED */
|
|
141
|
+
|
|
142
|
+
p = __archive_read_filter_ahead(filter, LZOP_HEADER_MAGIC_LEN, &avail);
|
|
143
|
+
if (p == NULL || avail == 0)
|
|
144
|
+
return (0);
|
|
145
|
+
|
|
146
|
+
if (memcmp(p, LZOP_HEADER_MAGIC, LZOP_HEADER_MAGIC_LEN))
|
|
147
|
+
return (0);
|
|
148
|
+
|
|
149
|
+
return (LZOP_HEADER_MAGIC_LEN * 8);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
#if !defined(HAVE_LZO_LZOCONF_H) || !defined(HAVE_LZO_LZO1X_H)
|
|
153
|
+
/*
|
|
154
|
+
* If we don't have the library on this system, we can't do the
|
|
155
|
+
* decompression directly. We can, however, try to run "lzop -d"
|
|
156
|
+
* in case that's available.
|
|
157
|
+
*/
|
|
158
|
+
static int
|
|
159
|
+
lzop_bidder_init(struct archive_read_filter *self)
|
|
160
|
+
{
|
|
161
|
+
int r;
|
|
162
|
+
|
|
163
|
+
r = __archive_read_program(self, "lzop -d");
|
|
164
|
+
/* Note: We set the format here even if __archive_read_program()
|
|
165
|
+
* above fails. We do, after all, know what the format is
|
|
166
|
+
* even if we weren't able to read it. */
|
|
167
|
+
self->code = ARCHIVE_FILTER_LZOP;
|
|
168
|
+
self->name = "lzop";
|
|
169
|
+
return (r);
|
|
170
|
+
}
|
|
171
|
+
#else
|
|
172
|
+
|
|
173
|
+
static const struct archive_read_filter_vtable
|
|
174
|
+
lzop_reader_vtable = {
|
|
175
|
+
.read = lzop_filter_read,
|
|
176
|
+
.close = lzop_filter_close
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/*
|
|
180
|
+
* Initialize the filter object.
|
|
181
|
+
*/
|
|
182
|
+
static int
|
|
183
|
+
lzop_bidder_init(struct archive_read_filter *self)
|
|
184
|
+
{
|
|
185
|
+
struct read_lzop *state;
|
|
186
|
+
|
|
187
|
+
self->code = ARCHIVE_FILTER_LZOP;
|
|
188
|
+
self->name = "lzop";
|
|
189
|
+
|
|
190
|
+
state = (struct read_lzop *)calloc(sizeof(*state), 1);
|
|
191
|
+
if (state == NULL) {
|
|
192
|
+
archive_set_error(&self->archive->archive, ENOMEM,
|
|
193
|
+
"Can't allocate data for lzop decompression");
|
|
194
|
+
return (ARCHIVE_FATAL);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
self->data = state;
|
|
198
|
+
self->vtable = &lzop_reader_vtable;
|
|
199
|
+
|
|
200
|
+
return (ARCHIVE_OK);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
static int
|
|
204
|
+
consume_header(struct archive_read_filter *self)
|
|
205
|
+
{
|
|
206
|
+
struct read_lzop *state = (struct read_lzop *)self->data;
|
|
207
|
+
const unsigned char *p, *_p;
|
|
208
|
+
unsigned checksum, flags, len, method, version;
|
|
209
|
+
|
|
210
|
+
/*
|
|
211
|
+
* Check LZOP magic code.
|
|
212
|
+
*/
|
|
213
|
+
p = __archive_read_filter_ahead(self->upstream,
|
|
214
|
+
LZOP_HEADER_MAGIC_LEN, NULL);
|
|
215
|
+
if (p == NULL)
|
|
216
|
+
return (ARCHIVE_EOF);
|
|
217
|
+
|
|
218
|
+
if (memcmp(p, LZOP_HEADER_MAGIC, LZOP_HEADER_MAGIC_LEN))
|
|
219
|
+
return (ARCHIVE_EOF);
|
|
220
|
+
__archive_read_filter_consume(self->upstream,
|
|
221
|
+
LZOP_HEADER_MAGIC_LEN);
|
|
222
|
+
|
|
223
|
+
p = __archive_read_filter_ahead(self->upstream, 29, NULL);
|
|
224
|
+
if (p == NULL)
|
|
225
|
+
goto truncated;
|
|
226
|
+
_p = p;
|
|
227
|
+
version = archive_be16dec(p);
|
|
228
|
+
p += 4;/* version(2 bytes) + library version(2 bytes) */
|
|
229
|
+
|
|
230
|
+
if (version >= 0x940) {
|
|
231
|
+
unsigned reqversion = archive_be16dec(p); p += 2;
|
|
232
|
+
if (reqversion < 0x900) {
|
|
233
|
+
archive_set_error(&self->archive->archive,
|
|
234
|
+
ARCHIVE_ERRNO_MISC, "Invalid required version");
|
|
235
|
+
return (ARCHIVE_FAILED);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
method = *p++;
|
|
240
|
+
if (method < 1 || method > 3) {
|
|
241
|
+
archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
|
|
242
|
+
"Unsupported method");
|
|
243
|
+
return (ARCHIVE_FAILED);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (version >= 0x940) {
|
|
247
|
+
unsigned level = *p++;
|
|
248
|
+
#if 0
|
|
249
|
+
unsigned default_level[] = {0, 3, 1, 9};
|
|
250
|
+
#endif
|
|
251
|
+
if (level == 0)
|
|
252
|
+
/* Method is 1..3 here due to check above. */
|
|
253
|
+
#if 0 /* Avoid an error Clang Static Analyzer claims
|
|
254
|
+
"Value stored to 'level' is never read". */
|
|
255
|
+
level = default_level[method];
|
|
256
|
+
#else
|
|
257
|
+
;/* NOP */
|
|
258
|
+
#endif
|
|
259
|
+
else if (level > 9) {
|
|
260
|
+
archive_set_error(&self->archive->archive,
|
|
261
|
+
ARCHIVE_ERRNO_MISC, "Invalid level");
|
|
262
|
+
return (ARCHIVE_FAILED);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
flags = archive_be32dec(p); p += 4;
|
|
267
|
+
|
|
268
|
+
if (flags & FILTER)
|
|
269
|
+
p += 4; /* Skip filter */
|
|
270
|
+
p += 4; /* Skip mode */
|
|
271
|
+
if (version >= 0x940)
|
|
272
|
+
p += 8; /* Skip mtime */
|
|
273
|
+
else
|
|
274
|
+
p += 4; /* Skip mtime */
|
|
275
|
+
len = *p++; /* Read filename length */
|
|
276
|
+
len += p - _p;
|
|
277
|
+
/* Make sure we have all bytes we need to calculate checksum. */
|
|
278
|
+
p = __archive_read_filter_ahead(self->upstream, len + 4, NULL);
|
|
279
|
+
if (p == NULL)
|
|
280
|
+
goto truncated;
|
|
281
|
+
if (flags & CRC32_HEADER)
|
|
282
|
+
checksum = crc32(crc32(0, NULL, 0), p, len);
|
|
283
|
+
else
|
|
284
|
+
checksum = adler32(adler32(0, NULL, 0), p, len);
|
|
285
|
+
if (archive_be32dec(p + len) != checksum)
|
|
286
|
+
#ifndef DONT_FAIL_ON_CRC_ERROR
|
|
287
|
+
goto corrupted;
|
|
288
|
+
#endif
|
|
289
|
+
__archive_read_filter_consume(self->upstream, len + 4);
|
|
290
|
+
if (flags & EXTRA_FIELD) {
|
|
291
|
+
/* Skip extra field */
|
|
292
|
+
p = __archive_read_filter_ahead(self->upstream, 4, NULL);
|
|
293
|
+
if (p == NULL)
|
|
294
|
+
goto truncated;
|
|
295
|
+
len = archive_be32dec(p);
|
|
296
|
+
__archive_read_filter_consume(self->upstream, len + 4 + 4);
|
|
297
|
+
}
|
|
298
|
+
state->flags = flags;
|
|
299
|
+
state->in_stream = 1;
|
|
300
|
+
return (ARCHIVE_OK);
|
|
301
|
+
truncated:
|
|
302
|
+
archive_set_error(&self->archive->archive,
|
|
303
|
+
ARCHIVE_ERRNO_FILE_FORMAT, "Truncated lzop data");
|
|
304
|
+
return (ARCHIVE_FAILED);
|
|
305
|
+
corrupted:
|
|
306
|
+
archive_set_error(&self->archive->archive,
|
|
307
|
+
ARCHIVE_ERRNO_FILE_FORMAT, "Corrupted lzop header");
|
|
308
|
+
return (ARCHIVE_FAILED);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
static int
|
|
312
|
+
consume_block_info(struct archive_read_filter *self)
|
|
313
|
+
{
|
|
314
|
+
struct read_lzop *state = (struct read_lzop *)self->data;
|
|
315
|
+
const unsigned char *p;
|
|
316
|
+
unsigned flags = state->flags;
|
|
317
|
+
|
|
318
|
+
p = __archive_read_filter_ahead(self->upstream, 4, NULL);
|
|
319
|
+
if (p == NULL)
|
|
320
|
+
goto truncated;
|
|
321
|
+
state->uncompressed_size = archive_be32dec(p);
|
|
322
|
+
__archive_read_filter_consume(self->upstream, 4);
|
|
323
|
+
if (state->uncompressed_size == 0)
|
|
324
|
+
return (ARCHIVE_EOF);
|
|
325
|
+
if (state->uncompressed_size > MAX_BLOCK_SIZE)
|
|
326
|
+
goto corrupted;
|
|
327
|
+
|
|
328
|
+
p = __archive_read_filter_ahead(self->upstream, 4, NULL);
|
|
329
|
+
if (p == NULL)
|
|
330
|
+
goto truncated;
|
|
331
|
+
state->compressed_size = archive_be32dec(p);
|
|
332
|
+
__archive_read_filter_consume(self->upstream, 4);
|
|
333
|
+
if (state->compressed_size > state->uncompressed_size)
|
|
334
|
+
goto corrupted;
|
|
335
|
+
|
|
336
|
+
if (flags & (CRC32_UNCOMPRESSED | ADLER32_UNCOMPRESSED)) {
|
|
337
|
+
p = __archive_read_filter_ahead(self->upstream, 4, NULL);
|
|
338
|
+
if (p == NULL)
|
|
339
|
+
goto truncated;
|
|
340
|
+
state->compressed_cksum = state->uncompressed_cksum =
|
|
341
|
+
archive_be32dec(p);
|
|
342
|
+
__archive_read_filter_consume(self->upstream, 4);
|
|
343
|
+
}
|
|
344
|
+
if ((flags & (CRC32_COMPRESSED | ADLER32_COMPRESSED)) &&
|
|
345
|
+
state->compressed_size < state->uncompressed_size) {
|
|
346
|
+
p = __archive_read_filter_ahead(self->upstream, 4, NULL);
|
|
347
|
+
if (p == NULL)
|
|
348
|
+
goto truncated;
|
|
349
|
+
state->compressed_cksum = archive_be32dec(p);
|
|
350
|
+
__archive_read_filter_consume(self->upstream, 4);
|
|
351
|
+
}
|
|
352
|
+
return (ARCHIVE_OK);
|
|
353
|
+
truncated:
|
|
354
|
+
archive_set_error(&self->archive->archive,
|
|
355
|
+
ARCHIVE_ERRNO_FILE_FORMAT, "Truncated lzop data");
|
|
356
|
+
return (ARCHIVE_FAILED);
|
|
357
|
+
corrupted:
|
|
358
|
+
archive_set_error(&self->archive->archive,
|
|
359
|
+
ARCHIVE_ERRNO_FILE_FORMAT, "Corrupted lzop header");
|
|
360
|
+
return (ARCHIVE_FAILED);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
static ssize_t
|
|
364
|
+
lzop_filter_read(struct archive_read_filter *self, const void **p)
|
|
365
|
+
{
|
|
366
|
+
struct read_lzop *state = (struct read_lzop *)self->data;
|
|
367
|
+
const void *b;
|
|
368
|
+
lzo_uint out_size;
|
|
369
|
+
uint32_t cksum;
|
|
370
|
+
int ret, r;
|
|
371
|
+
|
|
372
|
+
if (state->unconsumed_bytes) {
|
|
373
|
+
__archive_read_filter_consume(self->upstream,
|
|
374
|
+
state->unconsumed_bytes);
|
|
375
|
+
state->unconsumed_bytes = 0;
|
|
376
|
+
}
|
|
377
|
+
if (state->eof)
|
|
378
|
+
return (0);
|
|
379
|
+
|
|
380
|
+
for (;;) {
|
|
381
|
+
if (!state->in_stream) {
|
|
382
|
+
ret = consume_header(self);
|
|
383
|
+
if (ret < ARCHIVE_OK)
|
|
384
|
+
return (ret);
|
|
385
|
+
if (ret == ARCHIVE_EOF) {
|
|
386
|
+
state->eof = 1;
|
|
387
|
+
return (0);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
ret = consume_block_info(self);
|
|
391
|
+
if (ret < ARCHIVE_OK)
|
|
392
|
+
return (ret);
|
|
393
|
+
if (ret == ARCHIVE_EOF)
|
|
394
|
+
state->in_stream = 0;
|
|
395
|
+
else
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (state->out_block == NULL ||
|
|
400
|
+
state->out_block_size < state->uncompressed_size) {
|
|
401
|
+
void *new_block;
|
|
402
|
+
|
|
403
|
+
new_block = realloc(state->out_block, state->uncompressed_size);
|
|
404
|
+
if (new_block == NULL) {
|
|
405
|
+
archive_set_error(&self->archive->archive, ENOMEM,
|
|
406
|
+
"Can't allocate data for lzop decompression");
|
|
407
|
+
return (ARCHIVE_FATAL);
|
|
408
|
+
}
|
|
409
|
+
state->out_block = new_block;
|
|
410
|
+
state->out_block_size = state->uncompressed_size;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
b = __archive_read_filter_ahead(self->upstream,
|
|
414
|
+
state->compressed_size, NULL);
|
|
415
|
+
if (b == NULL) {
|
|
416
|
+
archive_set_error(&self->archive->archive,
|
|
417
|
+
ARCHIVE_ERRNO_FILE_FORMAT, "Truncated lzop data");
|
|
418
|
+
return (ARCHIVE_FATAL);
|
|
419
|
+
}
|
|
420
|
+
if (state->flags & CRC32_COMPRESSED)
|
|
421
|
+
cksum = crc32(crc32(0, NULL, 0), b, state->compressed_size);
|
|
422
|
+
else if (state->flags & ADLER32_COMPRESSED)
|
|
423
|
+
cksum = adler32(adler32(0, NULL, 0), b, state->compressed_size);
|
|
424
|
+
else
|
|
425
|
+
cksum = state->compressed_cksum;
|
|
426
|
+
if (cksum != state->compressed_cksum) {
|
|
427
|
+
archive_set_error(&self->archive->archive,
|
|
428
|
+
ARCHIVE_ERRNO_MISC, "Corrupted data");
|
|
429
|
+
return (ARCHIVE_FATAL);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/*
|
|
433
|
+
* If the both uncompressed size and compressed size are the same,
|
|
434
|
+
* we do not decompress this block.
|
|
435
|
+
*/
|
|
436
|
+
if (state->uncompressed_size == state->compressed_size) {
|
|
437
|
+
*p = b;
|
|
438
|
+
state->total_out += state->compressed_size;
|
|
439
|
+
state->unconsumed_bytes = state->compressed_size;
|
|
440
|
+
return ((ssize_t)state->uncompressed_size);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/*
|
|
444
|
+
* Drive lzo uncompression.
|
|
445
|
+
*/
|
|
446
|
+
out_size = (lzo_uint)state->uncompressed_size;
|
|
447
|
+
r = lzo1x_decompress_safe(b, (lzo_uint)state->compressed_size,
|
|
448
|
+
state->out_block, &out_size, NULL);
|
|
449
|
+
switch (r) {
|
|
450
|
+
case LZO_E_OK:
|
|
451
|
+
if (out_size == state->uncompressed_size)
|
|
452
|
+
break;
|
|
453
|
+
archive_set_error(&self->archive->archive,
|
|
454
|
+
ARCHIVE_ERRNO_MISC, "Corrupted data");
|
|
455
|
+
return (ARCHIVE_FATAL);
|
|
456
|
+
case LZO_E_OUT_OF_MEMORY:
|
|
457
|
+
archive_set_error(&self->archive->archive, ENOMEM,
|
|
458
|
+
"lzop decompression failed: out of memory");
|
|
459
|
+
return (ARCHIVE_FATAL);
|
|
460
|
+
default:
|
|
461
|
+
archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
|
|
462
|
+
"lzop decompression failed: %d", r);
|
|
463
|
+
return (ARCHIVE_FATAL);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
if (state->flags & CRC32_UNCOMPRESSED)
|
|
467
|
+
cksum = crc32(crc32(0, NULL, 0), state->out_block,
|
|
468
|
+
state->uncompressed_size);
|
|
469
|
+
else if (state->flags & ADLER32_UNCOMPRESSED)
|
|
470
|
+
cksum = adler32(adler32(0, NULL, 0), state->out_block,
|
|
471
|
+
state->uncompressed_size);
|
|
472
|
+
else
|
|
473
|
+
cksum = state->uncompressed_cksum;
|
|
474
|
+
if (cksum != state->uncompressed_cksum) {
|
|
475
|
+
archive_set_error(&self->archive->archive,
|
|
476
|
+
ARCHIVE_ERRNO_MISC, "Corrupted data");
|
|
477
|
+
return (ARCHIVE_FATAL);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
__archive_read_filter_consume(self->upstream, state->compressed_size);
|
|
481
|
+
*p = state->out_block;
|
|
482
|
+
state->total_out += out_size;
|
|
483
|
+
return ((ssize_t)out_size);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/*
|
|
487
|
+
* Clean up the decompressor.
|
|
488
|
+
*/
|
|
489
|
+
static int
|
|
490
|
+
lzop_filter_close(struct archive_read_filter *self)
|
|
491
|
+
{
|
|
492
|
+
struct read_lzop *state = (struct read_lzop *)self->data;
|
|
493
|
+
|
|
494
|
+
free(state->out_block);
|
|
495
|
+
free(state);
|
|
496
|
+
return (ARCHIVE_OK);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
#endif
|
|
@@ -24,17 +24,29 @@
|
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
#include "archive_platform.h"
|
|
27
|
-
__FBSDID("$FreeBSD
|
|
27
|
+
__FBSDID("$FreeBSD$");
|
|
28
28
|
|
|
29
29
|
#include "archive.h"
|
|
30
|
+
#include "archive_private.h"
|
|
31
|
+
|
|
32
|
+
#if ARCHIVE_VERSION_NUMBER < 4000000
|
|
33
|
+
/* Deprecated; remove in libarchive 4.0 */
|
|
34
|
+
int
|
|
35
|
+
archive_read_support_compression_none(struct archive *a)
|
|
36
|
+
{
|
|
37
|
+
return archive_read_support_filter_none(a);
|
|
38
|
+
}
|
|
39
|
+
#endif
|
|
30
40
|
|
|
31
41
|
/*
|
|
32
42
|
* Uncompressed streams are handled implicitly by the read core,
|
|
33
43
|
* so this is now a no-op.
|
|
34
44
|
*/
|
|
35
45
|
int
|
|
36
|
-
|
|
46
|
+
archive_read_support_filter_none(struct archive *a)
|
|
37
47
|
{
|
|
38
|
-
(
|
|
48
|
+
archive_check_magic(a, ARCHIVE_READ_MAGIC,
|
|
49
|
+
ARCHIVE_STATE_NEW, "archive_read_support_filter_none");
|
|
50
|
+
|
|
39
51
|
return (ARCHIVE_OK);
|
|
40
52
|
}
|