svn commit: r309519 - in projects/clang391-import: . cddl/contrib/opensolaris/tools/ctf/cvt contrib/libarchive contrib/libarchive/libarchive contrib/libarchive/libarchive/test contrib/libarchive/ta...
Dimitry Andric
dim at FreeBSD.org
Sun Dec 4 00:00:59 UTC 2016
Author: dim
Date: Sun Dec 4 00:00:56 2016
New Revision: 309519
URL: https://svnweb.freebsd.org/changeset/base/309519
Log:
Merge ^/head r309263 through r309518.
Added:
projects/clang391-import/contrib/libarchive/libarchive/test/test_compat_gtar_2.tar.uu
- copied unchanged from r309518, head/contrib/libarchive/libarchive/test/test_compat_gtar_2.tar.uu
projects/clang391-import/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.c
- copied unchanged from r309518, head/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.c
projects/clang391-import/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.tar.uu
- copied unchanged from r309518, head/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.tar.uu
projects/clang391-import/contrib/libarchive/libarchive/test/test_compat_star_acl_posix1e.c
- copied unchanged from r309518, head/contrib/libarchive/libarchive/test/test_compat_star_acl_posix1e.c
projects/clang391-import/contrib/libarchive/libarchive/test/test_compat_star_acl_posix1e.tar.uu
- copied unchanged from r309518, head/contrib/libarchive/libarchive/test/test_compat_star_acl_posix1e.tar.uu
projects/clang391-import/contrib/libarchive/libarchive/test/test_read_format_raw.bufr.uu
- copied unchanged from r309518, head/contrib/libarchive/libarchive/test/test_read_format_raw.bufr.uu
projects/clang391-import/lib/libc/tests/sys/mlock_helper.c
- copied unchanged from r309518, head/lib/libc/tests/sys/mlock_helper.c
projects/clang391-import/sbin/camcontrol/timestamp.c
- copied unchanged from r309518, head/sbin/camcontrol/timestamp.c
projects/clang391-import/sys/contrib/ck/
- copied from r309518, head/sys/contrib/ck/
projects/clang391-import/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu
- copied unchanged from r309518, head/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu
projects/clang391-import/sys/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu
- copied unchanged from r309518, head/sys/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu
projects/clang391-import/sys/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu
- copied unchanged from r309518, head/sys/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu
projects/clang391-import/sys/dev/cxgbe/firmware/t6fw_cfg.txt
- copied unchanged from r309518, head/sys/dev/cxgbe/firmware/t6fw_cfg.txt
projects/clang391-import/sys/dev/cxgbe/firmware/t6fw_cfg_fpga.txt
- copied unchanged from r309518, head/sys/dev/cxgbe/firmware/t6fw_cfg_fpga.txt
projects/clang391-import/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt
- copied unchanged from r309518, head/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt
projects/clang391-import/sys/modules/cxgbe/t6_firmware/
- copied from r309518, head/sys/modules/cxgbe/t6_firmware/
Deleted:
projects/clang391-import/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu
projects/clang391-import/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu
Modified:
projects/clang391-import/Makefile.inc1
projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctf.c
projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctftools.h
projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c
projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/st_parse.c
projects/clang391-import/contrib/libarchive/NEWS
projects/clang391-import/contrib/libarchive/libarchive/archive.h
projects/clang391-import/contrib/libarchive/libarchive/archive_acl.c
projects/clang391-import/contrib/libarchive/libarchive/archive_entry.c
projects/clang391-import/contrib/libarchive/libarchive/archive_entry.h
projects/clang391-import/contrib/libarchive/libarchive/archive_entry_acl.3
projects/clang391-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_uu.c
projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_xz.c
projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_cab.c
projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c
projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_xar.c
projects/clang391-import/contrib/libarchive/libarchive/archive_write_disk_posix.c
projects/clang391-import/contrib/libarchive/libarchive/test/test_compat_gtar.c
projects/clang391-import/contrib/libarchive/libarchive/test/test_read_format_raw.c
projects/clang391-import/contrib/libarchive/libarchive/test/test_sparse_basic.c
projects/clang391-import/contrib/libarchive/tar/creation_set.c
projects/clang391-import/contrib/libarchive/tar/test/main.c
projects/clang391-import/contrib/libarchive/tar/test/test_copy.c
projects/clang391-import/contrib/libarchive/tar/test/test_symlink_dir.c
projects/clang391-import/contrib/libarchive/tar/write.c
projects/clang391-import/contrib/netbsd-tests/games/t_factor.sh
projects/clang391-import/contrib/netbsd-tests/lib/libc/gen/t_vis.c
projects/clang391-import/contrib/netbsd-tests/lib/libc/sys/t_mlock.c
projects/clang391-import/contrib/netbsd-tests/lib/libc/sys/t_setrlimit.c
projects/clang391-import/contrib/subversion/CHANGES
projects/clang391-import/contrib/subversion/README
projects/clang391-import/contrib/subversion/build-outputs.mk
projects/clang391-import/contrib/subversion/configure
projects/clang391-import/contrib/subversion/configure.ac
projects/clang391-import/contrib/subversion/get-deps.sh
projects/clang391-import/contrib/subversion/subversion/include/private/svn_sqlite.h
projects/clang391-import/contrib/subversion/subversion/include/svn_version.h
projects/clang391-import/contrib/subversion/subversion/libsvn_client/merge.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/cached_data.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/caching.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/fs.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/fs_fs.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/low_level.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/pack.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/pack.h
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/rep-cache-db.h
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/rep-cache.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/rep-cache.h
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/transaction.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_fs/tree.c
projects/clang391-import/contrib/subversion/subversion/libsvn_fs_x/rep-cache-db.h
projects/clang391-import/contrib/subversion/subversion/libsvn_ra_serf/xml.c
projects/clang391-import/contrib/subversion/subversion/libsvn_repos/reporter.c
projects/clang391-import/contrib/subversion/subversion/libsvn_repos/repos.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/config_file.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/deprecated.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/gpg_agent.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/internal_statements.h
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/sqlite.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/sysinfo.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/win32_crashrpt.c
projects/clang391-import/contrib/subversion/subversion/libsvn_subr/xml.c
projects/clang391-import/contrib/subversion/subversion/libsvn_wc/conflicts.c
projects/clang391-import/contrib/subversion/subversion/libsvn_wc/update_editor.c
projects/clang391-import/contrib/subversion/subversion/libsvn_wc/wc-checks.h
projects/clang391-import/contrib/subversion/subversion/libsvn_wc/wc-metadata.h
projects/clang391-import/contrib/subversion/subversion/libsvn_wc/wc-queries.h
projects/clang391-import/contrib/subversion/subversion/svn/info-cmd.c
projects/clang391-import/contrib/subversion/subversion/svn/merge-cmd.c
projects/clang391-import/contrib/subversion/subversion/svnserve/serve.c
projects/clang391-import/etc/defaults/rc.conf
projects/clang391-import/etc/rc.subr
projects/clang391-import/include/Makefile
projects/clang391-import/include/stddef.h
projects/clang391-import/lib/libarchive/tests/Makefile
projects/clang391-import/lib/libc/sys/thr_set_name.2
projects/clang391-import/lib/libc/tests/sys/Makefile
projects/clang391-import/lib/libcapsicum/capsicum_helpers.h
projects/clang391-import/lib/libstand/dosfs.c
projects/clang391-import/lib/libutil/flopen.c
projects/clang391-import/lib/libutil/gr_util.c
projects/clang391-import/lib/libutil/pw_util.c
projects/clang391-import/lib/msun/arm/Symbol.map
projects/clang391-import/lib/msun/mips/Symbol.map
projects/clang391-import/lib/msun/riscv/Symbol.map
projects/clang391-import/libexec/rtld-elf/aarch64/rtld_machdep.h
projects/clang391-import/libexec/rtld-elf/riscv/rtld_machdep.h
projects/clang391-import/libexec/rtld-elf/rtld.c
projects/clang391-import/libexec/rtld-elf/sparc64/rtld_machdep.h
projects/clang391-import/sbin/camcontrol/Makefile
projects/clang391-import/sbin/camcontrol/camcontrol.8
projects/clang391-import/sbin/camcontrol/camcontrol.c
projects/clang391-import/sbin/camcontrol/camcontrol.h
projects/clang391-import/sbin/devd/devd.cc
projects/clang391-import/sbin/geom/class/mirror/geom_mirror.c
projects/clang391-import/sbin/geom/class/mirror/gmirror.8
projects/clang391-import/sbin/ipfw/ipfw2.c
projects/clang391-import/sbin/nvmecontrol/logpage.c
projects/clang391-import/share/man/man3/pthread_set_name_np.3
projects/clang391-import/share/man/man4/iic.4
projects/clang391-import/share/man/man4/ng_checksum.4
projects/clang391-import/share/man/man4/ng_patch.4
projects/clang391-import/share/mk/bsd.confs.mk
projects/clang391-import/share/mk/bsd.files.mk
projects/clang391-import/share/mk/bsd.incs.mk
projects/clang391-import/sys/arm/arm/gic.c
projects/clang391-import/sys/arm/arm/gic.h
projects/clang391-import/sys/arm/arm/gic_fdt.c
projects/clang391-import/sys/arm/ti/cpsw/if_cpsw.c
projects/clang391-import/sys/arm/ti/cpsw/if_cpswvar.h
projects/clang391-import/sys/arm64/arm64/mp_machdep.c
projects/clang391-import/sys/arm64/cavium/thunder_pcie_common.c
projects/clang391-import/sys/boot/Makefile.inc
projects/clang391-import/sys/boot/common/self_reloc.c
projects/clang391-import/sys/boot/efi/boot1/Makefile
projects/clang391-import/sys/boot/i386/boot2/Makefile
projects/clang391-import/sys/boot/i386/pxeldr/Makefile
projects/clang391-import/sys/boot/i386/zfsboot/Makefile
projects/clang391-import/sys/boot/pc98/boot0.5/Makefile
projects/clang391-import/sys/boot/pc98/boot2/Makefile
projects/clang391-import/sys/boot/pc98/pc98boot/Makefile
projects/clang391-import/sys/boot/powerpc/boot1.chrp/Makefile
projects/clang391-import/sys/boot/sparc64/boot1/Makefile
projects/clang391-import/sys/cam/cam_xpt.c
projects/clang391-import/sys/cam/scsi/scsi_all.c
projects/clang391-import/sys/cam/scsi/scsi_all.h
projects/clang391-import/sys/cam/scsi/scsi_enc_ses.c
projects/clang391-import/sys/conf/files
projects/clang391-import/sys/conf/files.arm64
projects/clang391-import/sys/conf/options
projects/clang391-import/sys/dev/acpica/acpi_ec.c
projects/clang391-import/sys/dev/ath/if_ath_tx_ht.c
projects/clang391-import/sys/dev/cxgbe/common/common.h
projects/clang391-import/sys/dev/cxgbe/common/t4_hw.c
projects/clang391-import/sys/dev/cxgbe/firmware/t4fw_interface.h
projects/clang391-import/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt
projects/clang391-import/sys/dev/cxgbe/t4_main.c
projects/clang391-import/sys/dev/etherswitch/etherswitch.c
projects/clang391-import/sys/dev/hyperv/netvsc/if_hn.c
projects/clang391-import/sys/dev/hyperv/netvsc/if_hnvar.h
projects/clang391-import/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
projects/clang391-import/sys/dev/hyperv/vmbus/vmbus.c
projects/clang391-import/sys/dev/hyperv/vmbus/vmbus_chan.c
projects/clang391-import/sys/dev/hyperv/vmbus/vmbus_if.m
projects/clang391-import/sys/dev/ioat/ioat.c
projects/clang391-import/sys/dev/ioat/ioat_internal.h
projects/clang391-import/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c
projects/clang391-import/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
projects/clang391-import/sys/dev/mrsas/mrsas.c
projects/clang391-import/sys/dev/mrsas/mrsas.h
projects/clang391-import/sys/dev/mrsas/mrsas_cam.c
projects/clang391-import/sys/dev/mrsas/mrsas_fp.c
projects/clang391-import/sys/dev/netmap/netmap_freebsd.c
projects/clang391-import/sys/dev/pci/pci_host_generic_fdt.c
projects/clang391-import/sys/dev/rtwn/if_rtwnvar.h
projects/clang391-import/sys/dev/rtwn/rtl8192c/usb/r92cu_init.c
projects/clang391-import/sys/dev/uart/uart_dev_pl011.c
projects/clang391-import/sys/dev/usb/wlan/if_rsu.c
projects/clang391-import/sys/dev/usb/wlan/if_rsureg.h
projects/clang391-import/sys/fs/ext2fs/ext2_alloc.c
projects/clang391-import/sys/fs/ext2fs/ext2_balloc.c
projects/clang391-import/sys/fs/ext2fs/ext2_bmap.c
projects/clang391-import/sys/fs/ext2fs/ext2_extern.h
projects/clang391-import/sys/fs/ext2fs/ext2_inode.c
projects/clang391-import/sys/fs/ext2fs/ext2_lookup.c
projects/clang391-import/sys/fs/ext2fs/ext2_mount.h
projects/clang391-import/sys/fs/ext2fs/ext2_subr.c
projects/clang391-import/sys/fs/ext2fs/ext2_vfsops.c
projects/clang391-import/sys/fs/ext2fs/ext2_vnops.c
projects/clang391-import/sys/fs/ext2fs/fs.h
projects/clang391-import/sys/fs/ext2fs/inode.h
projects/clang391-import/sys/geom/mirror/g_mirror.c
projects/clang391-import/sys/geom/mirror/g_mirror.h
projects/clang391-import/sys/geom/mirror/g_mirror_ctl.c
projects/clang391-import/sys/kern/kern_thr.c
projects/clang391-import/sys/kern/vfs_lookup.c
projects/clang391-import/sys/modules/Makefile
projects/clang391-import/sys/modules/bios/Makefile
projects/clang391-import/sys/modules/cxgbe/Makefile
projects/clang391-import/sys/modules/cxgbe/t4_firmware/Makefile
projects/clang391-import/sys/modules/cxgbe/t5_firmware/Makefile
projects/clang391-import/sys/modules/hyperv/netvsc/Makefile
projects/clang391-import/sys/net80211/ieee80211.c
projects/clang391-import/sys/net80211/ieee80211_var.h
projects/clang391-import/sys/netgraph/ng_base.c
projects/clang391-import/sys/netgraph/ng_patch.c
projects/clang391-import/sys/netgraph/ng_patch.h
projects/clang391-import/sys/netinet/tcp_input.c
projects/clang391-import/sys/netpfil/pf/if_pfsync.c
projects/clang391-import/sys/powerpc/powerpc/db_disasm.c
projects/clang391-import/sys/vm/_vm_radix.h
projects/clang391-import/sys/vm/vm_object.c
projects/clang391-import/sys/vm/vm_radix.c
projects/clang391-import/sys/x86/cpufreq/hwpstate.c
projects/clang391-import/tests/sys/acl/01.sh
projects/clang391-import/tests/sys/kern/coredump_phnum_test.sh
projects/clang391-import/tools/tools/nanobsd/nanobsd.sh
projects/clang391-import/usr.bin/indent/indent.1
projects/clang391-import/usr.bin/indent/indent.c
projects/clang391-import/usr.bin/indent/indent_codes.h
projects/clang391-import/usr.bin/indent/io.c
projects/clang391-import/usr.bin/indent/lexi.c
projects/clang391-import/usr.bin/indent/parse.c
projects/clang391-import/usr.bin/indent/pr_comment.c
projects/clang391-import/usr.bin/locale/Makefile
projects/clang391-import/usr.bin/locale/locale.c
projects/clang391-import/usr.bin/login/login_audit.c
projects/clang391-import/usr.sbin/bhyve/dbgport.c
projects/clang391-import/usr.sbin/i2c/i2c.c
projects/clang391-import/usr.sbin/ypldap/aldap.c
projects/clang391-import/usr.sbin/ypldap/ldapclient.c
projects/clang391-import/usr.sbin/ypldap/yp.c
projects/clang391-import/usr.sbin/ypldap/ypldap.c
projects/clang391-import/usr.sbin/ypldap/ypldap_dns.c
Directory Properties:
projects/clang391-import/ (props changed)
projects/clang391-import/cddl/ (props changed)
projects/clang391-import/cddl/contrib/opensolaris/ (props changed)
projects/clang391-import/contrib/libarchive/ (props changed)
projects/clang391-import/contrib/netbsd-tests/ (props changed)
projects/clang391-import/contrib/subversion/ (props changed)
Modified: projects/clang391-import/Makefile.inc1
==============================================================================
--- projects/clang391-import/Makefile.inc1 Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/Makefile.inc1 Sun Dec 4 00:00:56 2016 (r309519)
@@ -1631,11 +1631,6 @@ ${_bt}-usr.sbin/nmtree: ${_bt}-lib/libne
_cat= bin/cat
.endif
-# r264059 support for status=
-.if ${BOOTSTRAPPING} < 1100017
-_dd= bin/dd
-.endif
-
# r277259 crunchide: Correct 64-bit section header offset
# r281674 crunchide: always include both 32- and 64-bit ELF support
.if ${BOOTSTRAPPING} < 1100078
@@ -1718,7 +1713,6 @@ bootstrap-tools: .PHONY
${_groff} \
${_dtc} \
${_cat} \
- ${_dd} \
${_kbdcontrol} \
usr.bin/lorder \
${_libopenbsd} \
@@ -2403,6 +2397,11 @@ delete-old-dirs: .PHONY
elif [ -L "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
+ if [ -d "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
+ rmdir -v "${DESTDIR}${DEBUGDIR}/$${dir}" || true; \
+ elif [ -L "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
+ echo "${DESTDIR}${DEBUGDIR}/$${dir} is a link, please remove everything manually."; \
+ fi; \
done
@echo ">>> Old directories removed"
@@ -2417,6 +2416,11 @@ check-old-dirs: .PHONY
elif [ -L "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
+ if [ -d "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
+ echo "${DESTDIR}${DEBUGDIR}/$${dir}"; \
+ elif [ -L "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
+ echo "${DESTDIR}${DEBUGDIR}/$${dir} is a link, please remove everything manually."; \
+ fi; \
done
delete-old: delete-old-files delete-old-dirs .PHONY
Modified: projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctf.c
==============================================================================
--- projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctf.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctf.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -52,8 +52,6 @@ static char *curfile;
#define CTF_BUF_CHUNK_SIZE (64 * 1024)
#define RES_BUF_CHUNK_SIZE (64 * 1024)
-static int ntypes = 0; /* The number of types. */
-
struct ctf_buf {
strtab_t ctb_strtab; /* string table */
caddr_t ctb_base; /* pointer to base of buffer */
@@ -1145,10 +1143,6 @@ resurrect_types(ctf_header_t *h, tdata_t
(*mpp)->ml_type = tdarr[ctm->ctm_type];
(*mpp)->ml_offset = ctm->ctm_offset;
(*mpp)->ml_size = 0;
- if (ctm->ctm_type > ntypes) {
- parseterminate("Invalid member type ctm_type=%d",
- ctm->ctm_type);
- }
}
} else {
for (i = 0, mpp = &tdp->t_members; i < vlen;
@@ -1165,10 +1159,6 @@ resurrect_types(ctf_header_t *h, tdata_t
(*mpp)->ml_offset =
(int)CTF_LMEM_OFFSET(ctlm);
(*mpp)->ml_size = 0;
- if (ctlm->ctlm_type > ntypes) {
- parseterminate("Invalid lmember type ctlm_type=%d",
- ctlm->ctlm_type);
- }
}
}
@@ -1282,10 +1272,9 @@ ctf_parse(ctf_header_t *h, caddr_t buf,
{
tdata_t *td = tdata_new();
tdesc_t **tdarr;
+ int ntypes = count_types(h, buf);
int idx, i;
- ntypes = count_types(h, buf);
-
/* shudder */
tdarr = xcalloc(sizeof (tdesc_t *) * (ntypes + 1));
tdarr[0] = NULL;
Modified: projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctftools.h
==============================================================================
--- projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctftools.h Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/ctftools.h Sun Dec 4 00:00:56 2016 (r309519)
@@ -159,7 +159,7 @@ typedef struct ardef {
/* Auxiliary structure for structure/union tdesc_t */
typedef struct mlist {
int ml_offset; /* Offset from start of structure (in bits) */
- uint_t ml_size; /* Member size (in bits) */
+ int ml_size; /* Member size (in bits) */
char *ml_name; /* Member name */
struct tdesc *ml_type; /* Member type */
struct mlist *ml_next; /* Next member */
Modified: projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c
==============================================================================
--- projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -727,13 +727,6 @@ die_array_create(dwarf_t *dw, Dwarf_Die
tdesc_t *dimtdp;
int flags;
- /* Check for bogus gcc DW_AT_byte_size attribute */
- if (uval == (unsigned)-1) {
- printf("dwarf.c:%s() working around bogus -1 DW_AT_byte_size\n",
- __func__);
- uval = 0;
- }
-
tdp->t_size = uval;
/*
@@ -826,12 +819,6 @@ die_enum_create(dwarf_t *dw, Dwarf_Die d
tdp->t_type = ENUM;
(void) die_unsigned(dw, die, DW_AT_byte_size, &uval, DW_ATTR_REQ);
- /* Check for bogus gcc DW_AT_byte_size attribute */
- if (uval == (unsigned)-1) {
- printf("dwarf.c:%s() working around bogus -1 DW_AT_byte_size\n",
- __func__);
- uval = 0;
- }
tdp->t_size = uval;
if ((mem = die_child(dw, die)) != NULL) {
@@ -945,7 +932,7 @@ static void
die_sou_create(dwarf_t *dw, Dwarf_Die str, Dwarf_Off off, tdesc_t *tdp,
int type, const char *typename)
{
- Dwarf_Unsigned sz, bitsz, bitoff, maxsz=0;
+ Dwarf_Unsigned sz, bitsz, bitoff;
#if BYTE_ORDER == _LITTLE_ENDIAN
Dwarf_Unsigned bysz;
#endif
@@ -1004,8 +991,6 @@ die_sou_create(dwarf_t *dw, Dwarf_Die st
ml->ml_name = NULL;
ml->ml_type = die_lookup_pass1(dw, mem, DW_AT_type);
- debug(3, "die_sou_create(): ml_type = %p t_id = %d\n",
- ml->ml_type, ml->ml_type->t_id);
if (die_mem_offset(dw, mem, DW_AT_data_member_location,
&mloff, 0)) {
@@ -1051,24 +1036,8 @@ die_sou_create(dwarf_t *dw, Dwarf_Die st
*mlastp = ml;
mlastp = &ml->ml_next;
-
- /* Find the size of the largest member to work around a gcc
- * bug. See GCC Bugzilla 35998.
- */
- if (maxsz < ml->ml_size)
- maxsz = ml->ml_size;
-
} while ((mem = die_sibling(dw, mem)) != NULL);
- /* See if we got a bogus DW_AT_byte_size. GCC will sometimes
- * emit this.
- */
- if (sz == (unsigned)-1) {
- printf("dwarf.c:%s() working around bogus -1 DW_AT_byte_size\n",
- __func__);
- tdp->t_size = maxsz / 8; /* maxsz is in bits, t_size is bytes */
- }
-
/*
* GCC will attempt to eliminate unused types, thus decreasing the
* size of the emitted dwarf. That is, if you declare a foo_t in your
@@ -1170,7 +1139,7 @@ die_sou_resolve(tdesc_t *tdp, tdesc_t **
}
if (ml->ml_size != 0 && mt->t_type == INTRINSIC &&
- mt->t_intr->intr_nbits != (int)ml->ml_size) {
+ mt->t_intr->intr_nbits != ml->ml_size) {
/*
* This member is a bitfield, and needs to reference
* an intrinsic type with the same width. If the
@@ -1486,13 +1455,6 @@ die_base_create(dwarf_t *dw, Dwarf_Die b
*/
(void) die_unsigned(dw, base, DW_AT_byte_size, &sz, DW_ATTR_REQ);
- /* Check for bogus gcc DW_AT_byte_size attribute */
- if (sz == (unsigned)-1) {
- printf("dwarf.c:%s() working around bogus -1 DW_AT_byte_size\n",
- __func__);
- sz = 0;
- }
-
if (tdp->t_name == NULL)
terminate("die %llu: base type without name\n", off);
Modified: projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/st_parse.c
==============================================================================
--- projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/st_parse.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/cddl/contrib/opensolaris/tools/ctf/cvt/st_parse.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -952,7 +952,7 @@ soudef(char *cp, stabtype_t type, tdesc_
itdp = find_intrinsic(tdp);
if (itdp->t_type == INTRINSIC) {
- if ((int)mlp->ml_size != itdp->t_intr->intr_nbits) {
+ if (mlp->ml_size != itdp->t_intr->intr_nbits) {
parse_debug(4, cp, "making %d bit intrinsic "
"from %s", mlp->ml_size, tdesc_name(itdp));
mlp->ml_type = bitintrinsic(itdp, mlp->ml_size);
@@ -1173,7 +1173,7 @@ resolve_typed_bitfields_cb(void *arg, vo
while (tdp) {
switch (tdp->t_type) {
case INTRINSIC:
- if ((int)ml->ml_size != tdp->t_intr->intr_nbits) {
+ if (ml->ml_size != tdp->t_intr->intr_nbits) {
debug(3, "making %d bit intrinsic from %s",
ml->ml_size, tdesc_name(tdp));
ml->ml_type = bitintrinsic(tdp, ml->ml_size);
Modified: projects/clang391-import/contrib/libarchive/NEWS
==============================================================================
--- projects/clang391-import/contrib/libarchive/NEWS Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/NEWS Sun Dec 4 00:00:56 2016 (r309519)
@@ -1,3 +1,5 @@
+Oct 26, 2016: Remove liblzmadec support
+
Oct 23, 2016: libarchive 3.2.2 released
Security release
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive.h
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive.h Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive.h Sun Dec 4 00:00:56 2016 (r309519)
@@ -562,7 +562,7 @@ __LA_DECL la_int64_t archive_read_head
* we cannot say whether there are encrypted entries, then
* ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW is returned.
* In general, this function will return values below zero when the
- * reader is uncertain or totally uncapable of encryption support.
+ * reader is uncertain or totally incapable of encryption support.
* When this function returns 0 you can be sure that the reader
* supports encryption detection but no encrypted entries have
* been found yet.
@@ -984,12 +984,12 @@ __LA_DECL int archive_read_disk_can_desc
__LA_DECL int archive_read_disk_current_filesystem(struct archive *);
__LA_DECL int archive_read_disk_current_filesystem_is_synthetic(struct archive *);
__LA_DECL int archive_read_disk_current_filesystem_is_remote(struct archive *);
-/* Request that the access time of the entry visited by travesal be restored. */
+/* Request that the access time of the entry visited by traversal be restored. */
__LA_DECL int archive_read_disk_set_atime_restored(struct archive *);
/*
* Set behavior. The "flags" argument selects optional behavior.
*/
-/* Request that the access time of the entry visited by travesal be restored.
+/* Request that the access time of the entry visited by traversal be restored.
* This is the same as archive_read_disk_set_atime_restored. */
#define ARCHIVE_READDISK_RESTORE_ATIME (0x0001)
/* Default: Do not skip an entry which has nodump flags. */
@@ -1124,7 +1124,7 @@ __LA_DECL int archive_match_time_exclude
/*
* Flags to tell a matching type of time stamps. These are used for
- * following functinos.
+ * following functions.
*/
/* Time flag: mtime to be tested. */
#define ARCHIVE_MATCH_MTIME (0x0100)
@@ -1144,7 +1144,7 @@ __LA_DECL int archive_match_include_date
const char *_datestr);
__LA_DECL int archive_match_include_date_w(struct archive *, int _flag,
const wchar_t *_datestr);
-/* Set inclusion time by a particluar file. */
+/* Set inclusion time by a particular file. */
__LA_DECL int archive_match_include_file_time(struct archive *,
int _flag, const char *_pathname);
__LA_DECL int archive_match_include_file_time_w(struct archive *,
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_acl.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_acl.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_acl.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -94,6 +94,7 @@ archive_acl_clear(struct archive_acl *ac
acl->acl_text = NULL;
}
acl->acl_p = NULL;
+ acl->acl_types = 0;
acl->acl_state = 0; /* Not counting. */
}
@@ -284,8 +285,11 @@ acl_new_entry(struct archive_acl *acl,
aq = NULL;
while (ap != NULL) {
if (ap->type == type && ap->tag == tag && ap->id == id) {
- ap->permset = permset;
- return (ap);
+ if (id != -1 || (tag != ARCHIVE_ENTRY_ACL_USER &&
+ tag != ARCHIVE_ENTRY_ACL_GROUP)) {
+ ap->permset = permset;
+ return (ap);
+ }
}
aq = ap;
ap = ap->next;
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_entry.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_entry.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_entry.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -1442,6 +1442,15 @@ archive_entry_acl_add_entry_w(struct arc
}
/*
+ * Return a bitmask of ACL types in an archive entry ACL list
+ */
+int
+archive_entry_acl_types(struct archive_entry *entry)
+{
+ return ((&entry->acl)->acl_types);
+}
+
+/*
* Return a count of entries matching "want_type".
*/
int
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_entry.h
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_entry.h Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_entry.h Sun Dec 4 00:00:56 2016 (r309519)
@@ -508,6 +508,9 @@ __LA_DECL const wchar_t *archive_entry_a
__LA_DECL const char *archive_entry_acl_text(struct archive_entry *,
int /* flags */);
+/* Return bitmask of ACL types in an archive entry */
+__LA_DECL int archive_entry_acl_types(struct archive_entry *);
+
/* Return a count of entries matching 'want_type' */
__LA_DECL int archive_entry_acl_count(struct archive_entry *, int /* want_type */);
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_entry_acl.3
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_entry_acl.3 Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_entry_acl.3 Sun Dec 4 00:00:56 2016 (r309519)
@@ -33,7 +33,8 @@
.Nm archive_entry_acl_next ,
.Nm archive_entry_acl_next_w ,
.Nm archive_entry_acl_reset ,
-.Nm archive_entry_acl_text_w
+.Nm archive_entry_acl_text_w ,
+.Nm archive_entry_acl_types
.Nd functions for manipulating Access Control Lists in archive entry descriptions
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
@@ -85,6 +86,8 @@ Streaming Archive Library (libarchive, -
.Fn archive_entry_acl_reset "struct archive_entry *a" "int type"
.Ft const wchar_t *
.Fn archive_entry_acl_text_w "struct archive_entry *a" "int flags"
+.Ft int
+.Fn archive_entry_acl_types "struct archive_entry *a"
.\" enum?
.Sh DESCRIPTION
An
@@ -192,6 +195,11 @@ The returned long string is valid until
.Fn archive_entry_acl_add_entry_w
or
.Fn archive_entry_acl_text_w .
+.Pp
+.Fn archive_entry_acl_types
+get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4
+ACL entries cannot be mixed, this function is a very efficient way to detect if
+an ACL already contains POSIX.1e or NFSv4 ACL entries.
.Sh RETURN VALUES
.Fn archive_entry_acl_count
and
@@ -225,6 +233,9 @@ The returned long string is valid until
.Fn archive_entry_acl_add_entry_w
or
.Fn archive_entry_acl_text_w .
+.Pp
+.Fn archive_entry_acl_types
+returns a bitmask of ACL entry types or 0 if archive entry has no ACL entries.
.Sh SEE ALSO
.Xr archive_entry 3
.Xr libarchive 3 ,
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -125,6 +125,10 @@ static int setup_xattrs(struct archive_r
struct archive_entry *, int *fd);
static int setup_sparse(struct archive_read_disk *,
struct archive_entry *, int *fd);
+#if defined(HAVE_LINUX_FIEMAP_H)
+static int setup_sparse_fiemap(struct archive_read_disk *,
+ struct archive_entry *, int *fd);
+#endif
int
archive_read_disk_entry_from_file(struct archive *_a,
@@ -1124,7 +1128,7 @@ setup_xattrs(struct archive_read_disk *a
#if defined(HAVE_LINUX_FIEMAP_H)
/*
- * Linux sparse interface.
+ * Linux FIEMAP sparse interface.
*
* The FIEMAP ioctl returns an "extent" for each physical allocation
* on disk. We need to process those to generate a more compact list
@@ -1139,7 +1143,7 @@ setup_xattrs(struct archive_read_disk *a
*/
static int
-setup_sparse(struct archive_read_disk *a,
+setup_sparse_fiemap(struct archive_read_disk *a,
struct archive_entry *entry, int *fd)
{
char buff[4096];
@@ -1191,7 +1195,7 @@ setup_sparse(struct archive_read_disk *a
/* When something error happens, it is better we
* should return ARCHIVE_OK because an earlier
* version(<2.6.28) cannot perfom FS_IOC_FIEMAP. */
- goto exit_setup_sparse;
+ goto exit_setup_sparse_fiemap;
}
if (fm->fm_mapped_extents == 0) {
if (iters == 0) {
@@ -1226,14 +1230,24 @@ setup_sparse(struct archive_read_disk *a
} else
break;
}
-exit_setup_sparse:
+exit_setup_sparse_fiemap:
return (exit_sts);
}
-#elif defined(SEEK_HOLE) && defined(SEEK_DATA) && defined(_PC_MIN_HOLE_SIZE)
+#if !defined(SEEK_HOLE) || !defined(SEEK_DATA)
+static int
+setup_sparse(struct archive_read_disk *a,
+ struct archive_entry *entry, int *fd)
+{
+ return setup_sparse_fiemap(a, entry, fd);
+}
+#endif
+#endif /* defined(HAVE_LINUX_FIEMAP_H) */
+
+#if defined(SEEK_HOLE) && defined(SEEK_DATA)
/*
- * FreeBSD and Solaris sparse interface.
+ * SEEK_HOLE sparse interface (FreeBSD, Linux, Solaris)
*/
static int
@@ -1241,8 +1255,8 @@ setup_sparse(struct archive_read_disk *a
struct archive_entry *entry, int *fd)
{
int64_t size;
- off_t initial_off; /* FreeBSD/Solaris only, so off_t okay here */
- off_t off_s, off_e; /* FreeBSD/Solaris only, so off_t okay here */
+ off_t initial_off;
+ off_t off_s, off_e;
int exit_sts = ARCHIVE_OK;
int check_fully_sparse = 0;
@@ -1268,8 +1282,10 @@ setup_sparse(struct archive_read_disk *a
}
if (*fd >= 0) {
+#ifdef _PC_MIN_HOLE_SIZE
if (fpathconf(*fd, _PC_MIN_HOLE_SIZE) <= 0)
return (ARCHIVE_OK);
+#endif
initial_off = lseek(*fd, 0, SEEK_CUR);
if (initial_off != 0)
lseek(*fd, 0, SEEK_SET);
@@ -1280,8 +1296,10 @@ setup_sparse(struct archive_read_disk *a
if (path == NULL)
path = archive_entry_pathname(entry);
+#ifdef _PC_MIN_HOLE_SIZE
if (pathconf(path, _PC_MIN_HOLE_SIZE) <= 0)
return (ARCHIVE_OK);
+#endif
*fd = open(path, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
if (*fd < 0) {
archive_set_error(&a->archive, errno,
@@ -1292,6 +1310,19 @@ setup_sparse(struct archive_read_disk *a
initial_off = 0;
}
+#ifndef _PC_MIN_HOLE_SIZE
+ /* Check if the underlying filesystem supports seek hole */
+ off_s = lseek(*fd, 0, SEEK_HOLE);
+ if (off_s < 0)
+#if defined(HAVE_LINUX_FIEMAP_H)
+ return setup_sparse_fiemap(a, entry, fd);
+#else
+ goto exit_setup_sparse;
+#endif
+ else if (off_s > 0)
+ lseek(*fd, 0, SEEK_SET);
+#endif
+
off_s = 0;
size = archive_entry_size(entry);
while (off_s < size) {
@@ -1341,7 +1372,7 @@ exit_setup_sparse:
return (exit_sts);
}
-#else
+#elif !defined(HAVE_LINUX_FIEMAP_H)
/*
* Generic (stub) sparse support.
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_uu.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_uu.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_uu.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -312,6 +312,7 @@ uudecode_bidder_bid(struct archive_read_
avail -= len;
if (l == 6) {
+ /* "begin " */
if (!uuchar[*b])
return (0);
/* Get a length of decoded bytes. */
@@ -352,8 +353,8 @@ uudecode_bidder_bid(struct archive_read_
b += nl;
if (avail && uuchar[*b])
return (firstline+30);
- }
- if (l == 13) {
+ } else if (l == 13) {
+ /* "begin-base64 " */
while (len-nl > 0) {
if (!base64[*b++])
return (0);
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_xz.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_xz.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_filter_xz.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -43,8 +43,6 @@ __FBSDID("$FreeBSD$");
#endif
#if HAVE_LZMA_H
#include <lzma.h>
-#elif HAVE_LZMADEC_H
-#include <lzmadec.h>
#endif
#include "archive.h"
@@ -82,19 +80,6 @@ static ssize_t xz_filter_read(struct arc
static int xz_filter_close(struct archive_read_filter *);
static int xz_lzma_bidder_init(struct archive_read_filter *);
-#elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC
-
-struct private_data {
- lzmadec_stream stream;
- unsigned char *out_block;
- size_t out_block_size;
- int64_t total_out;
- char eof; /* True = found end of compressed data. */
-};
-
-/* Lzma-only filter */
-static ssize_t lzma_filter_read(struct archive_read_filter *, const void **);
-static int lzma_filter_close(struct archive_read_filter *);
#endif
/*
@@ -178,8 +163,6 @@ archive_read_support_filter_lzma(struct
bidder->free = NULL;
#if HAVE_LZMA_H && HAVE_LIBLZMA
return (ARCHIVE_OK);
-#elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC
- return (ARCHIVE_OK);
#else
archive_set_error(_a, ARCHIVE_ERRNO_MISC,
"Using external lzma program for lzma decompression");
@@ -763,175 +746,6 @@ xz_filter_close(struct archive_read_filt
#else
-#if HAVE_LZMADEC_H && HAVE_LIBLZMADEC
-
-/*
- * If we have the older liblzmadec library, then we can handle
- * LZMA streams but not XZ streams.
- */
-
-/*
- * Setup the callbacks.
- */
-static int
-lzma_bidder_init(struct archive_read_filter *self)
-{
- static const size_t out_block_size = 64 * 1024;
- void *out_block;
- struct private_data *state;
- ssize_t ret, avail_in;
-
- self->code = ARCHIVE_FILTER_LZMA;
- self->name = "lzma";
-
- state = (struct private_data *)calloc(sizeof(*state), 1);
- out_block = (unsigned char *)malloc(out_block_size);
- if (state == NULL || out_block == NULL) {
- archive_set_error(&self->archive->archive, ENOMEM,
- "Can't allocate data for lzma decompression");
- free(out_block);
- free(state);
- return (ARCHIVE_FATAL);
- }
-
- self->data = state;
- state->out_block_size = out_block_size;
- state->out_block = out_block;
- self->read = lzma_filter_read;
- self->skip = NULL; /* not supported */
- self->close = lzma_filter_close;
-
- /* Prime the lzma library with 18 bytes of input. */
- state->stream.next_in = (unsigned char *)(uintptr_t)
- __archive_read_filter_ahead(self->upstream, 18, &avail_in);
- if (state->stream.next_in == NULL)
- return (ARCHIVE_FATAL);
- state->stream.avail_in = avail_in;
- state->stream.next_out = state->out_block;
- state->stream.avail_out = state->out_block_size;
-
- /* Initialize compression library. */
- ret = lzmadec_init(&(state->stream));
- __archive_read_filter_consume(self->upstream,
- avail_in - state->stream.avail_in);
- if (ret == LZMADEC_OK)
- return (ARCHIVE_OK);
-
- /* Library setup failed: Clean up. */
- archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
- "Internal error initializing lzma library");
-
- /* Override the error message if we know what really went wrong. */
- switch (ret) {
- case LZMADEC_HEADER_ERROR:
- archive_set_error(&self->archive->archive,
- ARCHIVE_ERRNO_MISC,
- "Internal error initializing compression library: "
- "invalid header");
- break;
- case LZMADEC_MEM_ERROR:
- archive_set_error(&self->archive->archive, ENOMEM,
- "Internal error initializing compression library: "
- "out of memory");
- break;
- }
-
- free(state->out_block);
- free(state);
- self->data = NULL;
- return (ARCHIVE_FATAL);
-}
-
-/*
- * Return the next block of decompressed data.
- */
-static ssize_t
-lzma_filter_read(struct archive_read_filter *self, const void **p)
-{
- struct private_data *state;
- size_t decompressed;
- ssize_t avail_in, ret;
-
- state = (struct private_data *)self->data;
-
- /* Empty our output buffer. */
- state->stream.next_out = state->out_block;
- state->stream.avail_out = state->out_block_size;
-
- /* Try to fill the output buffer. */
- while (state->stream.avail_out > 0 && !state->eof) {
- state->stream.next_in = (unsigned char *)(uintptr_t)
- __archive_read_filter_ahead(self->upstream, 1, &avail_in);
- if (state->stream.next_in == NULL && avail_in < 0) {
- archive_set_error(&self->archive->archive,
- ARCHIVE_ERRNO_MISC,
- "truncated lzma input");
- return (ARCHIVE_FATAL);
- }
- state->stream.avail_in = avail_in;
-
- /* Decompress as much as we can in one pass. */
- ret = lzmadec_decode(&(state->stream), avail_in == 0);
- switch (ret) {
- case LZMADEC_STREAM_END: /* Found end of stream. */
- state->eof = 1;
- /* FALL THROUGH */
- case LZMADEC_OK: /* Decompressor made some progress. */
- __archive_read_filter_consume(self->upstream,
- avail_in - state->stream.avail_in);
- break;
- case LZMADEC_BUF_ERROR: /* Insufficient input data? */
- archive_set_error(&self->archive->archive,
- ARCHIVE_ERRNO_MISC,
- "Insufficient compressed data");
- return (ARCHIVE_FATAL);
- default:
- /* Return an error. */
- archive_set_error(&self->archive->archive,
- ARCHIVE_ERRNO_MISC,
- "Lzma decompression failed");
- return (ARCHIVE_FATAL);
- }
- }
-
- decompressed = state->stream.next_out - state->out_block;
- state->total_out += decompressed;
- if (decompressed == 0)
- *p = NULL;
- else
- *p = state->out_block;
- return (decompressed);
-}
-
-/*
- * Clean up the decompressor.
- */
-static int
-lzma_filter_close(struct archive_read_filter *self)
-{
- struct private_data *state;
- int ret;
-
- state = (struct private_data *)self->data;
- ret = ARCHIVE_OK;
- switch (lzmadec_end(&(state->stream))) {
- case LZMADEC_OK:
- break;
- default:
- archive_set_error(&(self->archive->archive),
- ARCHIVE_ERRNO_MISC,
- "Failed to clean up %s compressor",
- self->archive->archive.compression_name);
- ret = ARCHIVE_FATAL;
- }
-
- free(state->out_block);
- free(state);
- return (ret);
-}
-
-#else
-
/*
*
* If we have no suitable library on this system, we can't actually do
@@ -953,9 +767,6 @@ lzma_bidder_init(struct archive_read_fil
return (r);
}
-#endif /* HAVE_LZMADEC_H */
-
-
static int
xz_bidder_init(struct archive_read_filter *self)
{
@@ -984,5 +795,4 @@ lzip_bidder_init(struct archive_read_fil
return (r);
}
-
#endif /* HAVE_LZMA_H */
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_cab.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_cab.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_cab.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -645,12 +645,13 @@ cab_read_header(struct archive_read *a)
cab = (struct cab *)(a->format->data);
if (cab->found_header == 0 &&
p[0] == 'M' && p[1] == 'Z') {
- /* This is an executable? Must be self-extracting... */
+ /* This is an executable? Must be self-extracting... */
err = cab_skip_sfx(a);
if (err < ARCHIVE_WARN)
return (err);
- if ((p = __archive_read_ahead(a, sizeof(*p), NULL)) == NULL)
+ /* Re-read header after processing the SFX. */
+ if ((p = __archive_read_ahead(a, 42, NULL)) == NULL)
return (truncated_error(a));
}
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_mtree.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_mtree.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -75,6 +75,8 @@ __FBSDID("$FreeBSD$");
#define MTREE_HAS_OPTIONAL 0x0800
#define MTREE_HAS_NOCHANGE 0x1000 /* FreeBSD specific */
+#define MTREE_HASHTABLE_SIZE 1024
+
struct mtree_option {
struct mtree_option *next;
char *value;
@@ -86,6 +88,8 @@ struct mtree_entry {
char *name;
char full;
char used;
+ unsigned int name_hash;
+ struct mtree_entry *hashtable_next;
};
struct mtree {
@@ -98,6 +102,7 @@ struct mtree {
const char *archive_format_name;
struct mtree_entry *entries;
struct mtree_entry *this_entry;
+ struct mtree_entry *entry_hashtable[MTREE_HASHTABLE_SIZE];
struct archive_string current_dir;
struct archive_string contents_name;
@@ -110,6 +115,7 @@ struct mtree {
static int bid_keycmp(const char *, const char *, ssize_t);
static int cleanup(struct archive_read *);
static int detect_form(struct archive_read *, int *);
+static unsigned int hash(const char *);
static int mtree_bid(struct archive_read *, int);
static int parse_file(struct archive_read *, struct archive_entry *,
struct mtree *, struct mtree_entry *, int *);
@@ -862,11 +868,12 @@ process_add_entry(struct archive_read *a
struct mtree_option **global, const char *line, ssize_t line_len,
struct mtree_entry **last_entry, int is_form_d)
{
- struct mtree_entry *entry;
+ struct mtree_entry *entry, *ht_iter;
struct mtree_option *iter;
const char *next, *eq, *name, *end;
size_t name_len, len;
int r, i;
+ unsigned int ht_idx;
if ((entry = malloc(sizeof(*entry))) == NULL) {
archive_set_error(&a->archive, errno, "Can't allocate memory");
@@ -877,6 +884,8 @@ process_add_entry(struct archive_read *a
entry->name = NULL;
entry->used = 0;
entry->full = 0;
+ entry->name_hash = 0;
+ entry->hashtable_next = NULL;
/* Add this entry to list. */
if (*last_entry == NULL)
@@ -929,6 +938,16 @@ process_add_entry(struct archive_read *a
memcpy(entry->name, name, name_len);
entry->name[name_len] = '\0';
parse_escapes(entry->name, entry);
+ entry->name_hash = hash(entry->name);
+
+ ht_idx = entry->name_hash % MTREE_HASHTABLE_SIZE;
+ if ((ht_iter = mtree->entry_hashtable[ht_idx]) != NULL) {
+ while (ht_iter->hashtable_next)
+ ht_iter = ht_iter->hashtable_next;
+ ht_iter->hashtable_next = entry;
+ } else {
+ mtree->entry_hashtable[ht_idx] = entry;
+ }
for (iter = *global; iter != NULL; iter = iter->next) {
r = add_option(a, &entry->options, iter->value,
@@ -1122,9 +1141,10 @@ parse_file(struct archive_read *a, struc
* with pathname canonicalization, which is a very
* tricky subject.)
*/
- for (mp = mentry->next; mp != NULL; mp = mp->next) {
+ for (mp = mentry->hashtable_next; mp != NULL; mp = mp->hashtable_next) {
if (mp->full && !mp->used
- && strcmp(mentry->name, mp->name) == 0) {
+ && mentry->name_hash == mp->name_hash
+ && strcmp(mentry->name, mp->name) == 0) {
/* Later lines override earlier ones. */
mp->used = 1;
r1 = parse_line(a, entry, mtree, mp,
@@ -2000,3 +2020,19 @@ readline(struct archive_read *a, struct
find_off = u - mtree->line.s;
}
}
+
+static unsigned int
+hash(const char *p)
+{
+ /* A 32-bit version of Peter Weinberger's (PJW) hash algorithm,
+ as used by ELF for hashing function names. */
+ unsigned g, h = 0;
+ while (*p != '\0') {
+ h = (h << 4) + *p++;
+ if ((g = h & 0xF0000000) != 0) {
+ h ^= g >> 24;
+ h &= 0x0FFFFFFF;
+ }
+ }
+ return h;
+}
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -294,6 +294,54 @@ archive_read_format_tar_cleanup(struct a
return (ARCHIVE_OK);
}
+/*
+ * Validate number field
+ *
+ * This has to be pretty lenient in order to accomodate the enormous
+ * variety of tar writers in the world:
+ * = POSIX ustar requires octal values with leading zeros and
+ * specific termination on fields
+ * = Many writers use different termination (in particular, libarchive
+ * omits terminator bytes to squeeze one or two more digits)
+ * = Many writers pad with space and omit leading zeros
+ * = GNU tar and star write base-256 values if numbers are too
+ * big to be represented in octal
+ *
+ * This should tolerate all variants in use. It will reject a field
+ * where the writer just left garbage after a trailing NUL.
+ */
+static int
+validate_number_field(const char* p_field, size_t i_size)
+{
+ unsigned char marker = (unsigned char)p_field[0];
+ if (marker == 128 || marker == 255 || marker == 0) {
+ /* Base-256 marker, there's nothing we can check. */
+ return 1;
+ } else {
+ /* Must be octal */
+ size_t i = 0;
+ /* Skip any leading spaces */
+ while (i < i_size && p_field[i] == ' ') {
+ ++i;
+ }
+ /* Must be at least one octal digit. */
+ if (i >= i_size || p_field[i] < '0' || p_field[i] > '7') {
+ return 0;
+ }
+ /* Skip remaining octal digits. */
+ while (i < i_size && p_field[i] >= '0' && p_field[i] <= '7') {
+ ++i;
+ }
+ /* Any remaining characters must be space or NUL padding. */
+ while (i < i_size) {
+ if (p_field[i] != ' ' && p_field[i] != 0) {
+ return 0;
+ }
+ ++i;
+ }
+ return 1;
+ }
+}
static int
archive_read_format_tar_bid(struct archive_read *a, int best_bid)
@@ -346,23 +394,19 @@ archive_read_format_tar_bid(struct archi
return (0);
bid += 2; /* 6 bits of variation in an 8-bit field leaves 2 bits. */
- /* Sanity check: Look at first byte of mode field. */
- switch (255 & (unsigned)header->mode[0]) {
- case 0: case 255:
- /* Base-256 value: No further verification possible! */
- break;
- case ' ': /* Not recommended, but not illegal, either. */
- break;
- case '0': case '1': case '2': case '3':
- case '4': case '5': case '6': case '7':
- /* Octal Value. */
- /* TODO: Check format of remainder of this field. */
- break;
- default:
- /* Not a valid mode; bail out here. */
- return (0);
+ /*
+ * Check format of mode/uid/gid/mtime/size/rdevmajor/rdevminor fields.
+ */
+ if (bid > 0 && (
+ validate_number_field(header->mode, sizeof(header->mode)) == 0
+ || validate_number_field(header->uid, sizeof(header->uid)) == 0
+ || validate_number_field(header->gid, sizeof(header->gid)) == 0
+ || validate_number_field(header->mtime, sizeof(header->mtime)) == 0
+ || validate_number_field(header->size, sizeof(header->size)) == 0
+ || validate_number_field(header->rdevmajor, sizeof(header->rdevmajor)) == 0
+ || validate_number_field(header->rdevminor, sizeof(header->rdevminor)) == 0)) {
+ bid = 0;
}
- /* TODO: Sanity test uid/gid/size/mtime/rdevmajor/rdevminor fields. */
return (bid);
}
Modified: projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_xar.c
==============================================================================
--- projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_xar.c Sat Dec 3 21:56:46 2016 (r309518)
+++ projects/clang391-import/contrib/libarchive/libarchive/archive_read_support_format_xar.c Sun Dec 4 00:00:56 2016 (r309519)
@@ -43,8 +43,6 @@ __FBSDID("$FreeBSD$");
#endif
#if HAVE_LZMA_H
#include <lzma.h>
-#elif HAVE_LZMADEC_H
-#include <lzmadec.h>
#endif
#ifdef HAVE_ZLIB_H
#include <zlib.h>
@@ -334,9 +332,6 @@ struct xar {
#if HAVE_LZMA_H && HAVE_LIBLZMA
lzma_stream lzstream;
int lzstream_valid;
-#elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC
- lzmadec_stream lzstream;
- int lzstream_valid;
#endif
/*
* For Checksum data.
@@ -1526,34 +1521,6 @@ decompression_init(struct archive_read *
xar->lzstream.total_in = 0;
xar->lzstream.total_out = 0;
break;
-#elif defined(HAVE_LZMADEC_H) && defined(HAVE_LIBLZMADEC)
- case LZMA:
- if (xar->lzstream_valid)
- lzmadec_end(&(xar->lzstream));
- r = lzmadec_init(&(xar->lzstream));
- if (r != LZMADEC_OK) {
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list