svn commit: r45118 - in head/share: security/advisories security/patches/EN-14:07 security/patches/EN-14:08 security/patches/SA-14:15 security/patches/SA-14:16 xml

Xin LI delphij at FreeBSD.org
Tue Jun 24 19:29:19 UTC 2014


Author: delphij
Date: Tue Jun 24 19:29:17 2014
New Revision: 45118
URL: http://svnweb.freebsd.org/changeset/doc/45118

Log:
  Add SA-14:15.iconv, SA-14:16.file, EN-14:07.pmap and EN-14:08.heimdal.

Added:
  head/share/security/advisories/FreeBSD-EN-14:07.pmap.asc   (contents, props changed)
  head/share/security/advisories/FreeBSD-EN-14:08.heimdal.asc   (contents, props changed)
  head/share/security/advisories/FreeBSD-SA-14:15.iconv.asc   (contents, props changed)
  head/share/security/advisories/FreeBSD-SA-14:16.file.asc   (contents, props changed)
  head/share/security/patches/EN-14:07/
  head/share/security/patches/EN-14:07/pmap.patch   (contents, props changed)
  head/share/security/patches/EN-14:07/pmap.patch.asc   (contents, props changed)
  head/share/security/patches/EN-14:08/
  head/share/security/patches/EN-14:08/heimdal.patch   (contents, props changed)
  head/share/security/patches/EN-14:08/heimdal.patch.asc   (contents, props changed)
  head/share/security/patches/SA-14:15/
  head/share/security/patches/SA-14:15/iconv.patch   (contents, props changed)
  head/share/security/patches/SA-14:15/iconv.patch.asc   (contents, props changed)
  head/share/security/patches/SA-14:16/
  head/share/security/patches/SA-14:16/file-8.4.patch   (contents, props changed)
  head/share/security/patches/SA-14:16/file-8.4.patch.asc   (contents, props changed)
  head/share/security/patches/SA-14:16/file.patch   (contents, props changed)
  head/share/security/patches/SA-14:16/file.patch.asc   (contents, props changed)
Modified:
  head/share/xml/advisories.xml
  head/share/xml/notices.xml

Added: head/share/security/advisories/FreeBSD-EN-14:07.pmap.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-EN-14:07.pmap.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,129 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-14:07.pmap                                           Errata Notice
+                                                          The FreeBSD Project
+
+Topic:          Bug with PCID implementation
+
+Category:       core
+Module:         kernel
+Announced:      2014-06-24
+Credits:        Henrik Gulbrandsen
+Affects:        FreeBSD 10.0-RELEASE
+Corrected:      2014-03-04 21:51:09 UTC (stable/10, 10.0-STABLE)
+                2014-06-24 19:05:08 UTC (releng/10.0, 10.0-RELEASE-p6)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:http://security.freebsd.org/>.
+
+I.   Background
+
+Process-context identifiers (PCIDs) are a facility in modern x86
+processors, which tags TLB entries with the Id of the address space
+and allows to avoid TLB invalidation on the context switch.
+
+II.  Problem Description
+
+Due to bug in the handling of the mask of the CPU set where the given
+address space could have cached TLB entries, stale mappings could be
+seen by multithreaded programs.
+
+III. Impact
+
+Applications, most notably Java, which makes heavy use of threads may
+randomly crash due to the inconcistency.
+
+IV.  Workaround
+
+Systems that do not run have a CPU that supports the Process-Context
+Identifiers feature are not affected.
+
+The system administrator can add the following to /boot/loader.conf
+which disables Process-Context Identifiers to workaround this problem:
+
+	vm.pmap.pcid_enabled="0"
+
+V.   Solution
+
+Perform one of the following:
+
+1) Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.
+
+2) To update your present system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+[FreeBSD 10.0]
+# fetch http://security.FreeBSD.org/patches/EN-14:07/pmap.patch
+# fetch http://security.FreeBSD.org/patches/EN-14:07/pmap.patch.asc
+# gpg --verify pmap.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile your kernel as described in
+<URL:http://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
+system.
+
+3) To update your system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+VI.  Correction details
+
+The following list contains the revision numbers of each file that was
+corrected in FreeBSD.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/10/                                                        r262753
+releng/10.0/                                                      r267829
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+The latest revision of this Errata Notice is available at
+http://security.FreeBSD.org/advisories/FreeBSD-EN-14:07.pmap.asc
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAEBCgAGBQJTqc+KAAoJEO1n7NZdz2rnAbYP/iZKU3SSwHwWPzYa03ZwgW4u
+54MigJuV/wyOfJj2ZZuOXTaYZP1miRgFr7mn9OWkA6slWHLAVkmN9fWrUU8tRPjJ
+UDVhnbToVYIcmW2tEH5lZ5y1Stt178NZTeMo26jgkWhj74RZ10OIFdSuNlNUQGSr
+djanCdgpnGL+odml+rQcGAAKKH97PchQ6r9IivNgE6mnGhGvzOjQOSdxioBLew14
+w5Ua3k4nn/4hYi4RMPJ/vAlPdJHVsnZb8kRWhf4Ncj19IkvJ8EO6PmnHCbdGmV1I
+cvqVFxXPGGA/A+O9E+1S+54SWotivpgjSujuQFFmvuzBbPhlt/Hmtn6YwljNG4+e
+V6MsMRPMHVoIhOCBv9xfCHgyajA7jgbRGqQkMWxwKPVLjmk2NWOsbGBjHMFHnqYn
+87Sh7crbFffNGwqGJgn+vXSXeNZ/95EWSBE0/B4KfqPeX6XCJI/C/sMRl0ATKa7C
+k227J0olXKKUInLEq7tS1nLS0IKlWLF5WiRFx7DOa4DKLBcLZkYKTu3ATJySQ4V3
+hDNDpubB3/94ug1slRNWDYGxzaZq0ctUTubxsHW7a0iYQi/PkssCT/8jVAdsx8hq
+S1DjGZiFAKLOiJUSvPfONdwodORyEyMB+z37EfgeHKKqnjJXgSEtmnmI+7sT8hlR
+FhXX1XQOBUtPxF+MY4bT
+=vNzu
+-----END PGP SIGNATURE-----

Added: head/share/security/advisories/FreeBSD-EN-14:08.heimdal.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-EN-14:08.heimdal.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,166 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-14:08.heimdal                                        Errata Notice
+                                                          The FreeBSD Project
+
+Topic:          gss_pseudo_random interoperability issue
+
+Category:       contrib
+Module:         heimdal
+Announced:      2014-06-24
+Credits:        Marc Dionne, Nico Williams, and Benjamin Kaduk
+Affects:        All supported versions of FreeBSD prior to 9.2-RELEASE.
+Corrected:	2013-12-16 06:52:30 UTC (stable/9, 9.2-STABLE)
+                2014-06-24 19:05:36 UTC (releng/9.2, 9.2-RELEASE-p9)
+                2014-06-24 19:05:36 UTC (releng/9.1, 9.1-RELEASE-p16)
+                2013-12-16 06:56:38 UTC (stable/8, 8.4-STABLE)
+                2014-06-24 19:05:47 UTC (releng/8.4, 8.4-RELEASE-p13)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:http://security.freebsd.org/>.
+
+I.   Background
+
+Heimdal provides an implementation of Kerberos 5, the Generic Security
+Service API (GSS-API), and the krb5 GSS-API mechanism.  The GSS-API is
+an abstract API that provides a unified interface for security services
+that wraps many underlying security mechanisms.  Application protocols
+using the GSS-API exchange context tokens to establish a security context.
+Once the security context has successfully been established, it can be
+used to checksum and/or encrypt messages between the two parties of
+the context, securely generate an identical pseudorandom bitstring at
+both endpoints, and other security-related functionality.
+
+Kerberos 5 permits the use of different encryption types for encryption
+keys; part of the specification for each encryption type is a pseudo-random
+function that uses an encryption key and some optional seed data to
+produce a pseudo-random bitstring of a fixed length.  The GSS_Pseudo_random
+function uses an established security context and some optional seed
+data to produce a pseudo-random bitstring of (nearly) arbitrary lengh.
+The specification for GSS_Pseudo_random for the krb5 mechanism (RFC 4402)
+uses a counter mode to produce the arbitrary length output from the
+fixed-length output of the underlying enctype's pseudo-random output.
+
+II.  Problem Description
+
+RFC 4402 specifies that the counter which is prepended to the seed data
+must be encoded in network (big-endian) byte order before being input to the
+encryption type's pseudo-random function.  All released versions of Heimdal
+that include a GSS_Pseudo_random implementation for the krb5 mechanism
+encode the counter as a little-endian integer.
+
+III. Impact
+
+Only applications using the GSS_Pseudo_random functionality with the krb5
+mechanism are affected; the number of such applications is believed to
+be small.  (RFC 4402 was published in 2006.)  Since the first value
+used for the counter is zero, the first block of output is correct, but
+the second and all subsequent blocks of output are incorrect.
+Old versions of Heimdal will interoperate over the network with each
+other, but will not interoperate with MIT krb5 peers or other implementations
+of RFC 4402, if producing more than one block of pseudo-random output.
+For the commonly used AES encryption types, the first 128 bits of output
+are correct but the subsequent output differs.
+
+IV.  Workaround
+
+Applications which do not use the GSS_Pseudo_random functionality
+are not affected.
+
+Applications which can reduce their pseudo-random needs to a single
+block length (e.g., 128 bits for AES) will interoperate with all
+known implementations.
+
+V.   Solution
+
+Perform one of the following:
+
+1) Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.
+
+2) To update your present system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch http://security.FreeBSD.org/patches/EN-14:08/heimdal.patch
+# fetch http://security.FreeBSD.org/patches/EN-14:08/heimdal.patch.asc
+# gpg --verify heimdal.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:http://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all deamons using the library, or reboot the system.
+
+3) To update your system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+VI.  Correction details
+
+The following list contains the revision numbers of each file that was
+corrected in FreeBSD.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/8/                                                         r259452
+releng/8.4/                                                       r267832
+stable/9/                                                         r259451
+releng/9.1/                                                       r267831
+releng/9.2/                                                       r267831
+stable/10/                                                        r259447
+releng/10.0/                                                      r259758
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+The discussion of this interoperability issue in the IETF kitten working
+group archives may be found here:
+http://www.ietf.org/mail-archive/web/kitten/current/msg04479.html
+
+The latest revision of this Errata Notice is available at
+http://security.FreeBSD.org/advisories/FreeBSD-EN-14:08.heimdal.asc
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAEBCgAGBQJTqc+KAAoJEO1n7NZdz2rnk2wP/RXxr1lgWeKY1wCusB/wlkLO
+6cVsvZwIkvTvKNglkqY4dEvJJ1mdy25xP2yoft+ChM9ugTiGs5gfxsROXLCufobP
+0ycnbl0pxL00aNwU3nXaejPhfblwwLmnwZAb3JuxF795BH/7z4a9vdC0mEn86RbQ
+efeu3hqxJJxDL65xUntlgzWiFSWB+DZUjBU9DAFWlOPnbVR2T3n5w4sFSWMDtmv+
+AxqKjNVLgIHQKECTYjyFV2UjXCn6Np2m0dWHSpYM5MsdSaUolOqDRRxzAK5LKHg0
+ieHTf1OgBpfe/iBuSwybtEv/4cagDvN82Vsni8MbLEeDMa4DSsKorea1SIrCTcBv
+CW4ugln7bBWgm3hnCEIWsy0wwhSVQetGFjYgimZySI5/nO2Jnh1Ung705MPCYpb7
++X+G/oLqp04Bq81sWY4KFN8cfcmM2fQyL0zYOS72VPjXEvwcHnsbjZ/yO8eekO+J
+oxkd8FaXR4b21HCh5cdlwWNNU4mu9wId8CLJW0y9l15zloTQvjW8+MSlEhAm9KUl
+nYq/qHGiLTvxmsHlnQumay8lhtRJf0r3pNih+xchxy7JCVeu84aZHSIDrklZoiAr
+LjOWagYFP9qHqhmmRxVoHKBeHgUaDWiJ9J0a0R44GadowrstYT7cYCzfSQr1KkDz
+HPlEHgAxXm0shG0bbEA5
+=tTXE
+-----END PGP SIGNATURE-----

Added: head/share/security/advisories/FreeBSD-SA-14:15.iconv.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-SA-14:15.iconv.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,131 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-SA-14:15.iconv                                      Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          iconv(3) NULL pointer dereference and out-of-bounds array access
+
+Category:       core
+Module:         libc/iconv
+Announced:      2014-06-24
+Credits:        Manuel Mausz, Tijl Coosemans
+Affects:        FreeBSD 10.0
+Corrected:      2014-03-04 12:43:10 UTC (stable/10, 10.0-STABLE)
+                2014-06-24 19:05:08 UTC (releng/10.0, 10.0-RELEASE-p6)
+CVE Name:       CVE-2014-3951
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:http://security.FreeBSD.org/>.
+
+I.   Background
+
+The iconv(3) API allows converting text data from one character set
+encoding to another.  Applications first open a converter between two
+encodings using iconv_open(3) and then convert text using iconv(3).
+HZ is an encoding of the GB2312 character set used for simplified
+Chinese characters.  VIQR is an encoding for Vietnamese characters.
+
+II.  Problem Description
+
+A NULL pointer dereference in the initialization code of the HZ module and
+an out of bounds array access in the initialization code of the VIQR module
+make iconv_open(3) calls involving HZ or VIQR result in an application crash.
+
+III. Impact
+
+Services where an attacker can control the arguments of an iconv_open(3)
+call can be caused to crash resulting in a denial-of-service.  For example,
+an email encoded in HZ may cause an email delivery service to crash if it
+converts emails to a more generic encoding like UTF-8 before applying
+filtering rules.
+
+IV.  Workaround
+
+No workaround is available, but systems that do not process untrusted
+Chinese or Vietnamese input are not affected by this vulnerability.
+
+V.   Solution
+
+Perform one of the following:
+
+1) Upgrade your vulnerable system to a supported FreeBSD stable or
+release / security branch (releng) dated after the correction date.
+
+2) To update your vulnerable system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+[FreeBSD 10.0]
+# fetch http://security.FreeBSD.org/patches/SA-14:15/iconv.patch
+# fetch http://security.FreeBSD.org/patches/SA-14:15/iconv.patch.asc
+# gpg --verify iconv.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:http://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all deamons using the library, or reboot the system.
+
+3) To update your vulnerable system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/10/                                                        r262731
+releng/10.0/                                                      r267829
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3951>
+
+The latest revision of this advisory is available at
+<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-14:15.iconv.asc>
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAEBCgAGBQJTqc+KAAoJEO1n7NZdz2rnmqsP/1VXkGjjBB34Qh43HGxmVofB
+8Zfkc19nQtHvQaS+wAUfm10Onu2QJUPPm5OZL+kYYxJs1G4/VLTDTl/7cHBkCoA0
+abdDpRbtG6CMHfnaARpMOAkg+uvHl41pjHgr+mi4TRYivzSNp+qfw8BsPJ21DAS6
+Om6H6m+ggHjTXrtniBtQ+os2wfxbGGMJQzL94QC+tyzzFTEknIt8lgn6hboh99eV
+pQb8WnSRCPuyiw+hKHdOOS7er7ZCIy9l0VWWfyJzcZP3/W5q6qSNCdnMUNZsTk0L
+ruiUrhRjookK6/3VKb+9/YMfpB8xuQad2fk2mbQZkaxdSVJyFIfOI6Y9PJYbx9BP
+Z7Bp0qyEGs+5/CZhiSwr2E/3k7kNe+30dvbPE0SBw9JNS4T0FyzlRUM4Y8s843Lf
+GUcacSLcgCv8DUU517GmTL+UvnE+dajppr/vueRTC2T0mj8OX1qukq1Rjs9RpZkc
+l2ajo3TbMZjwwivEsJEI2706tqv2v7+xON6WrZbUvbXlp4Kw7v01pS2Z3DFIeK8d
+D9H80XuBIM6ZvMUd3NZHBGBjcxYEHvB5hM26ceCAP/ZvOSa4jp8vVQcPVONwj55n
+RvX+K66t3yGiRznjhUUL+/8T9ulcI8TomgKL+U3UXasinYU9F4v55yXRugYvgnig
+jh8e1kgmRt2rt5ZLthe5
+=Wr8S
+-----END PGP SIGNATURE-----

Added: head/share/security/advisories/FreeBSD-SA-14:16.file.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-SA-14:16.file.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,161 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-SA-14:16.file                                       Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          Multiple vulnerabilities in file(1) and libmagic(3)
+
+Category:       contrib
+Module:         file
+Announced:      2014-06-24
+Affects:        All supported versions of FreeBSD.
+Corrected:      2014-06-24 19:04:55 UTC (stable/10, 10.0-STABLE)
+                2014-06-24 19:05:08 UTC (releng/10.0, 10.0-RELEASE-p6)
+                2014-06-24 19:04:55 UTC (stable/9, 9.3-PRERELEASE)
+                2014-06-24 19:05:19 UTC (releng/9.3, 9.3-RC2)
+                2014-06-24 19:05:36 UTC (releng/9.2, 9.2-RELEASE-p9)
+                2014-06-24 19:05:36 UTC (releng/9.1, 9.1-RELEASE-p16)
+                2014-06-24 19:04:55 UTC (stable/8, 8.4-STABLE)
+                2014-06-24 19:05:47 UTC (releng/8.4, 8.4-RELEASE-p13)
+CVE Name:       CVE-2012-1571, CVE-2013-7345, CVE-2014-1943, CVE-2014-2270
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:http://security.FreeBSD.org/>.
+
+I.   Background
+
+The file(1) utility attempts to classify file system objects based on
+filesystem, magic number and language tests.
+
+The libmagic(3) library provides most of the functionality of file(1)
+and may be used by other applications.
+
+II.  Problem Description
+
+A specifically crafted Composite Document File (CDF) file can trigger an
+out-of-bounds read or an invalid pointer dereference. [CVE-2012-1571]
+
+A flaw in regular expression in the awk script detector makes use of
+multiple wildcards with unlimited repetitions. [CVE-2013-7345]
+
+A malicious input file could trigger infinite recursion in libmagic(3).
+[CVE-2014-1943]
+
+A specifically crafted Portable Executable (PE) can trigger out-of-bounds
+read. [CVE-2014-2270]
+
+III. Impact
+
+An attacker who can cause file(1) or any other applications using the
+libmagic(3) library to be run on a maliciously constructed input can
+the application to crash or consume excessive CPU resources, resulting
+in a denial-of-service.
+
+IV.  Workaround
+
+No workaround is available, but systems where file(1) and other
+libmagic(3)-using applications are never run on untrusted input are not
+vulnerable.
+
+V.   Solution
+
+Perform one of the following:
+
+1) Upgrade your vulnerable system to a supported FreeBSD stable or
+release / security branch (releng) dated after the correction date.
+
+2) To update your vulnerable system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+[FreeBSD 9.1, 9.2, 9.3, 10.0]
+# fetch http://security.FreeBSD.org/patches/SA-14:16/file.patch
+# fetch http://security.FreeBSD.org/patches/SA-14:16/file.patch.asc
+# gpg --verify file.patch.asc
+
+[FreeBSD 8.4]
+# fetch http://security.FreeBSD.org/patches/SA-14:16/file-8.4.patch
+# fetch http://security.FreeBSD.org/patches/SA-14:16/file-8.4.patch.asc
+# gpg --verify file.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:http://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all deamons using the library, or reboot the system.
+
+3) To update your vulnerable system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/8/                                                         r267828
+releng/8.4/                                                       r267832
+stable/9/                                                         r267828
+releng/9.1/                                                       r267831
+releng/9.2/                                                       r267831
+releng/9.3/                                                       r267830
+stable/10/                                                        r267828
+releng/10.0/                                                      r267829
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1571>
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-7345>
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1943>
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-2270>
+
+The latest revision of this advisory is available at
+<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-14:16.file.asc>
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAEBCgAGBQJTqc+KAAoJEO1n7NZdz2rnaLsP/jwrr5b1qZ9tObnN3FXwzEjD
+jNHa3AJKHXgrYGzF8yNrZElhE48f02sr9dEXqIw/E5eElcVhi38RBEkwblE8Nj2H
+M5bzEwVS7kWPcAl1vBno1rFTHutUTOSSopBGgwlNAlWSFnr1iFIIU9dQ6kcGCnBj
+LvMx5kTSyZ707kArRrFjrDeYlPLSE/vSBOC00TqReS+3Q9By1IH5kUWesDWr+3Gk
+lvW/JzSTcyOicrGR6vRHiLn9+NKojd6pV3hqV/uxuth1OxRtiGPeodL6CyvkipMo
+rKjTgXEY2KluBGV9ff+rbeARLfUh2PDJ9Z5BfF7O8ZyMZpKkcw6MFRRfJ0xgtUZK
+vpF0u8NVMIZhHLSJ9q1Roij2POxeOETNXG2bGKtVu8pqhJ14DvMfPgamsQLhzKRX
+vBN1Gw+3RctJrQpF9HvYFOsKlfzcWyka82lw5GSsDYGH2TamU00CTQmx/5PW+WVo
+xV3C17Wj8AkmRYWeC4IzkTiZ8avVOZ+TMyJKRhL6EGBT3ramu8BFdV8oZOcHHpR/
+rAI6eZcFtNuwKuvfqHZmh84GicHDkMHXy6OiyCYUW9uNdWl7nUPMMxp/zEA6gtay
+ozVedGIIrhYkfQAJRcRAcnEBYqcBVkCD/rKXJtdALl3RDQrediRaz0nWE2bJ/qs3
+bHjS6vu9VS/3z0+pEYri
+=5Ihe
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/EN-14:07/pmap.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/EN-14:07/pmap.patch	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,13 @@
+Index: sys/amd64/amd64/pmap.c
+===================================================================
+--- sys/amd64/amd64/pmap.c	(revision 267572)
++++ sys/amd64/amd64/pmap.c	(working copy)
+@@ -367,7 +367,7 @@ static int pmap_flags = PMAP_PDE_SUPERPAGE;	/* fla
+ 
+ static struct unrhdr pcid_unr;
+ static struct mtx pcid_mtx;
+-int pmap_pcid_enabled = 1;
++int pmap_pcid_enabled = 0;
+ SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled,
+     0, "Is TLB Context ID enabled ?");
+ int invpcid_works = 0;

Added: head/share/security/patches/EN-14:07/pmap.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/EN-14:07/pmap.patch.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAABCgAGBQJTqc/GAAoJEO1n7NZdz2rnhbEP/2pckDzyxx2dvtY4VXOHwykV
+K8Wb0m8o2x6IpHx/lqvToBX77VneknAmfc6yNxldMTmBq5sLA4kuLp9EkH7iuFtV
+k1XcDWWGaoyLEK6Ur2f/CQOE9t0Qig5i6hVNbWCYzmjNZZGGE4Xd60rSSyQ1QN28
+JNoopI5p/wGWkDlDbw5f+foXBfbuOx1t1XWgEPRbxAXnvc6f3QBi7HQEu7GWWu04
+o5bn7+42zv3ij6aJ/zMb818Ml5cp1zeGT9VkSN17yqEdzmF+5C32caUp4qiiA5+n
+gTR56RISYT+85xK+4AXdv3kZE5ZSQlsA8wLquKDiRVNFvqH7ly6v21JbWEfJBwyz
+4iCA5I9A/Bp8z5ScouupkPimMEKCmSFwpE/Ww914x5bOaYl4xsXUQzBKs2nIWaao
+u7sR7HxW0bq9pK1iVR2kU2md+65vq98HHO1xi1wQ8Aqw9Gt3CKklubiOf36qilUE
+FCxBtumgOkHP8HWSE4oKFqLqx3GPV2j2BMSZiUE/x7gfd86FF6/fyx01NIekMpny
+Osp5rXA5jnKgHJC8M6sF/+Xag1kBaIur5wNtaPSsQASmiXs4yXY29zH3sX4AxA2n
+0fS1fItiM/US30TPGbcT0YEU8FR/CHDchUD2FjbjxntU4VSBUrnsK+ydRWiL+M0e
+q4qZ9kLz2/HzBYG54HiI
+=XjDR
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/EN-14:08/heimdal.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/EN-14:08/heimdal.patch	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,13 @@
+Index: crypto/heimdal/lib/gssapi/krb5/prf.c
+===================================================================
+--- crypto/heimdal/lib/gssapi/krb5/prf.c	(revision 267806)
++++ crypto/heimdal/lib/gssapi/krb5/prf.c	(working copy)
+@@ -117,7 +117,7 @@ _gsskrb5_pseudo_random(OM_uint32 *minor_status,
+     num = 0;
+     p = prf_out->value;
+     while(desired_output_len > 0) {
+-	_gsskrb5_encode_om_uint32(num, input.data);
++	_gsskrb5_encode_be_om_uint32(num, input.data);
+ 	ret = krb5_crypto_prf(context, crypto, &input, &output);
+ 	if (ret) {
+ 	    OM_uint32 junk;

Added: head/share/security/patches/EN-14:08/heimdal.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/EN-14:08/heimdal.patch.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAABCgAGBQJTqc/GAAoJEO1n7NZdz2rneCAP/Ay62O3KiG8sQoCgH/3aTcV2
+k0OhOBxvRsTAaiOy5EVT+BMtZWymDBWiiFZueL6jpYEy3LthqAmguj9KMWC0k6ni
+a6ETu8IzPWjqmYodqcPEM0dfDsovSzDxP2iAdKwcCrY379d/7hPvmhVR2IMt7oXj
+7aeu1zDZtubw5SkpS9Vy6X8yynuz3caxqaUjmRuumonZ+isrQxeC8taXQP/nFIs1
+F71Il7LluEf9Abieh9R1m6mVftABGju9TSvmzHtjuBd0jzInBpegDlxeD3sw4mqa
+TWHKABsd9DqEnghkTN3f0CQ+ba8/KEcN5hR+xpjWGw+8GjilkE5JswIM8W9iQK61
+BIim1dwS4WwLxIxgQtaHwSXrWq5yVrSFwq3sy5yUCa/dZVr4U+vlr4YHZtEw0V+H
+MUh8/3087XlLskNVA7zYQMyjO0f0BUVB5V28VZQJnrywPzHCP/ZHCKboqTmGA5t6
+19MaloslnSpCp73T+ooQ+aiv5j8FGKJfhXOKHkrrj6wocNq1iqsc0coVWv3TtN1J
+GAM00xKyxQLe2nVP+EPQJt1uDdNvcPfXCbNzzQbyW4wnRklBuXqIKKeZn/vYTIYE
+x0oPHPPgAihot6gP2ZZRclT0kpqdJWFGw6fjsBJINBrMPAlClwPUQtelUkueaxtz
+PGj8k8GVtsFOjgvqsRfb
+=QKVG
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/SA-14:15/iconv.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-14:15/iconv.patch	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,175 @@
+Index: lib/libc/iconv/citrus_prop.c
+===================================================================
+--- lib/libc/iconv/citrus_prop.c	(revision 267591)
++++ lib/libc/iconv/citrus_prop.c	(working copy)
+@@ -339,7 +339,7 @@ name_found:
+ 
+ static int
+ _citrus_prop_parse_element(struct _memstream * __restrict ms,
+-    const _citrus_prop_hint_t * __restrict hints, void ** __restrict context)
++    const _citrus_prop_hint_t * __restrict hints, void * __restrict context)
+ {
+ 	int ch, errnum;
+ #define _CITRUS_PROP_HINT_NAME_LEN_MAX	255
+@@ -435,8 +435,7 @@ _citrus_prop_parse_variable(const _citrus_prop_hin
+ 		if (ch == EOF || ch == '\0')
+ 			break;
+ 		_memstream_ungetc(&ms, ch);
+-		errnum = _citrus_prop_parse_element(
+-		    &ms, hints, (void ** __restrict)context);
++		errnum = _citrus_prop_parse_element(&ms, hints, context);
+ 		if (errnum != 0)
+ 			return (errnum);
+ 	}
+Index: lib/libc/iconv/citrus_prop.h
+===================================================================
+--- lib/libc/iconv/citrus_prop.h	(revision 267591)
++++ lib/libc/iconv/citrus_prop.h	(working copy)
+@@ -42,7 +42,7 @@ typedef struct _citrus_prop_hint_t _citrus_prop_hi
+ 
+ #define _CITRUS_PROP_CB0_T(_func_, _type_) \
+ typedef int (*_citrus_prop_##_func_##_cb_func_t) \
+-    (void ** __restrict, const char *, _type_); \
++    (void * __restrict, const char *, _type_); \
+ typedef struct { \
+ 	_citrus_prop_##_func_##_cb_func_t func; \
+ } _citrus_prop_##_func_##_cb_t;
+@@ -52,7 +52,7 @@ _CITRUS_PROP_CB0_T(str, const char *)
+ 
+ #define _CITRUS_PROP_CB1_T(_func_, _type_) \
+ typedef int (*_citrus_prop_##_func_##_cb_func_t) \
+-    (void ** __restrict, const char *, _type_, _type_); \
++    (void * __restrict, const char *, _type_, _type_); \
+ typedef struct { \
+ 	_citrus_prop_##_func_##_cb_func_t func; \
+ } _citrus_prop_##_func_##_cb_t;
+Index: lib/libiconv_modules/BIG5/citrus_big5.c
+===================================================================
+--- lib/libiconv_modules/BIG5/citrus_big5.c	(revision 267591)
++++ lib/libiconv_modules/BIG5/citrus_big5.c	(working copy)
+@@ -170,7 +170,7 @@ _citrus_BIG5_check_excludes(_BIG5EncodingInfo *ei,
+ }
+ 
+ static int
+-_citrus_BIG5_fill_rowcol(void ** __restrict ctx, const char * __restrict s,
++_citrus_BIG5_fill_rowcol(void * __restrict ctx, const char * __restrict s,
+     uint64_t start, uint64_t end)
+ {
+ 	_BIG5EncodingInfo *ei;
+@@ -189,7 +189,7 @@ static int
+ 
+ static int
+ /*ARGSUSED*/
+-_citrus_BIG5_fill_excludes(void ** __restrict ctx,
++_citrus_BIG5_fill_excludes(void * __restrict ctx,
+     const char * __restrict s __unused, uint64_t start, uint64_t end)
+ {
+ 	_BIG5EncodingInfo *ei;
+@@ -235,7 +235,6 @@ static int
+ _citrus_BIG5_encoding_module_init(_BIG5EncodingInfo * __restrict ei,
+     const void * __restrict var, size_t lenvar)
+ {
+-	void *ctx = (void *)ei;
+ 	const char *s;
+ 	int err;
+ 
+@@ -257,9 +256,9 @@ _citrus_BIG5_encoding_module_init(_BIG5EncodingInf
+ 	}
+ 
+ 	/* fallback Big5-1984, for backward compatibility. */
+-	_citrus_BIG5_fill_rowcol((void **)&ctx, "row", 0xA1, 0xFE);
+-	_citrus_BIG5_fill_rowcol((void **)&ctx, "col", 0x40, 0x7E);
+-	_citrus_BIG5_fill_rowcol((void **)&ctx, "col", 0xA1, 0xFE);
++	_citrus_BIG5_fill_rowcol(ei, "row", 0xA1, 0xFE);
++	_citrus_BIG5_fill_rowcol(ei, "col", 0x40, 0x7E);
++	_citrus_BIG5_fill_rowcol(ei, "col", 0xA1, 0xFE);
+ 
+ 	return (0);
+ }
+Index: lib/libiconv_modules/HZ/citrus_hz.c
+===================================================================
+--- lib/libiconv_modules/HZ/citrus_hz.c	(revision 267591)
++++ lib/libiconv_modules/HZ/citrus_hz.c	(working copy)
+@@ -65,8 +65,8 @@ typedef enum {
+ } charset_t;
+ 
+ typedef struct {
++	int	 start;
+ 	int	 end;
+-	int	 start;
+ 	int	 width;
+ } range_t;
+ 
+@@ -503,12 +503,12 @@ _citrus_HZ_encoding_module_uninit(_HZEncodingInfo
+ }
+ 
+ static int
+-_citrus_HZ_parse_char(void **context, const char *name __unused, const char *s)
++_citrus_HZ_parse_char(void *context, const char *name __unused, const char *s)
+ {
+ 	escape_t *escape;
+ 	void **p;
+ 
+-	p = (void **)*context;
++	p = (void **)context;
+ 	escape = (escape_t *)p[0];
+ 	if (escape->ch != '\0')
+ 		return (EINVAL);
+@@ -520,7 +520,7 @@ static int
+ }
+ 
+ static int
+-_citrus_HZ_parse_graphic(void **context, const char *name, const char *s)
++_citrus_HZ_parse_graphic(void *context, const char *name, const char *s)
+ {
+ 	_HZEncodingInfo *ei;
+ 	escape_t *escape;
+@@ -527,7 +527,7 @@ static int
+ 	graphic_t *graphic;
+ 	void **p;
+ 
+-	p = (void **)*context;
++	p = (void **)context;
+ 	escape = (escape_t *)p[0];
+ 	ei = (_HZEncodingInfo *)p[1];
+ 	graphic = malloc(sizeof(*graphic));
+@@ -589,13 +589,13 @@ _CITRUS_PROP_HINT_END
+ };
+ 
+ static int
+-_citrus_HZ_parse_escape(void **context, const char *name, const char *s)
++_citrus_HZ_parse_escape(void *context, const char *name, const char *s)
+ {
+ 	_HZEncodingInfo *ei;
+ 	escape_t *escape;
+ 	void *p[2];
+ 
+-	ei = (_HZEncodingInfo *)*context;
++	ei = (_HZEncodingInfo *)context;
+ 	escape = malloc(sizeof(*escape));
+ 	if (escape == NULL)
+ 		return (EINVAL);
+Index: lib/libiconv_modules/VIQR/citrus_viqr.c
+===================================================================
+--- lib/libiconv_modules/VIQR/citrus_viqr.c	(revision 267591)
++++ lib/libiconv_modules/VIQR/citrus_viqr.c	(working copy)
+@@ -431,7 +431,6 @@ static int
+ _citrus_VIQR_encoding_module_init(_VIQREncodingInfo * __restrict ei,
+     const void * __restrict var __unused, size_t lenvar __unused)
+ {
+-	const mnemonic_def_t *p;
+ 	const char *s;
+ 	size_t i, n;
+ 	int errnum;
+@@ -455,7 +454,10 @@ _citrus_VIQR_encoding_module_init(_VIQREncodingInf
+ 			return (errnum);
+ 		}
+ 	}
+-	for (i = 0;; ++i) {
++	/* a + 1 < b + 1 here to silence gcc warning about unsigned < 0. */
++	for (i = 0; i + 1 < mnemonic_ext_size + 1; ++i) {
++		const mnemonic_def_t *p;
++
+ 		p = &mnemonic_ext[i];
+ 		n = strlen(p->name);
+ 		if (ei->mb_cur_max < n)

Added: head/share/security/patches/SA-14:15/iconv.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-14:15/iconv.patch.asc	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iQIcBAABCgAGBQJTqc+xAAoJEO1n7NZdz2rnGpkP/0rm6huVPDIo3qTvfuXyKVvX
+MGbc8+35EfDSUxAYLkQIJxiEF88+chJrEqyivP311+IMFUXdyplQvXQiZcTKXdPp
+hYVa7wCeC7BbdXILiw+hi9J5TI4QiE+b4Kmn83DIS/iYols4tRpUVXN4OCFaO3BR
+oW5RuCI/VBVqwUm+3pZhz1GuzPOmZo+8KxdHk3nmSmoad6SNvPB0W3QY53P2J96E
+8euOJGM/38QWav2g7QsQeI+MAx2jcxUmRIQVfCblfXG1O0izNjuC8hjqJptSvBpc
+uvJAhQxptludfAa7/ZnW4ws/dJz4ekNSlerjRpNiXE0Hr2r2TAM8cFwG9AbVThga
+wZ8+rHFOC30kIJ6uvZbpTPHNSHxu4pVyOOoh4Tfr1xpDqb/3ktSXfXX6bgXPrhMI
+PdBVVACYGbdurQU8Z65JbMmNx96Sl79w8mOHrMSeVS3pRL7FtJ4J+c8sOLyiaouM
+kIf+vbqSPHRqpkCtmmKP6QM+qrfhrlzmYwyNTE2pKautaGNCyAMY3lrKhbEr7llK
+L4YZ9/9Z6ivZZZDhAZbzcJrWQOuW0wmt7E2CyC1TOHOBjI6202J/++ZWSmmsexWF
+mWNai/3IqCGd24unHHxdrTUSw+b99pL+HAgAdTQZ2dg3Qh/qC0PAcICBoWDgS0sM
+Q34JUXT4cVpCqHeFhPkp
+=gJzF
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/SA-14:16/file-8.4.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-14:16/file-8.4.patch	Tue Jun 24 19:29:17 2014	(r45118)
@@ -0,0 +1,1891 @@
+Index: contrib/file/ascmagic.c
+===================================================================
+--- contrib/file/ascmagic.c	(revision 267806)
++++ contrib/file/ascmagic.c	(working copy)
+@@ -151,7 +151,7 @@ file_ascmagic_with_encoding(struct magic_set *ms,
+ 	if ((utf8_end = encode_utf8(utf8_buf, mlen, ubuf, ulen)) == NULL)
+ 		goto done;
+ 	if ((rv = file_softmagic(ms, utf8_buf, (size_t)(utf8_end - utf8_buf),
+-	    TEXTTEST)) != 0)
++	    0, TEXTTEST)) != 0)
+ 		goto done;
+ 	else
+ 		rv = -1;
+Index: contrib/file/cdf.c
+===================================================================
+--- contrib/file/cdf.c	(revision 267806)
++++ contrib/file/cdf.c	(working copy)
+@@ -24,15 +24,18 @@
+  * POSSIBILITY OF SUCH DAMAGE.
+  */
+ /*
+- * Parse composite document files, the format used in Microsoft Office
+- * document files before they switched to zipped xml.
++ * Parse Composite Document Files, the format used in Microsoft Office
++ * document files before they switched to zipped XML.
+  * Info from: http://sc.openoffice.org/compdocfileformat.pdf
++ *
++ * N.B. This is the "Composite Document File" format, and not the
++ * "Compound Document Format", nor the "Channel Definition Format".
+  */
+ 
+ #include "file.h"
+ 
+ #ifndef lint
+-FILE_RCSID("@(#)$File: cdf.c,v 1.30 2009/05/06 14:29:47 christos Exp $")
++FILE_RCSID("@(#)$File: cdf.c,v 1.49 2012/02/20 20:04:37 christos Exp $")
+ #endif
+ 
+ #include <assert.h>
+@@ -44,6 +47,9 @@
+ #include <string.h>
+ #include <time.h>
+ #include <ctype.h>
++#ifdef HAVE_LIMITS_H
++#include <limits.h>
++#endif
+ 
+ #ifndef EFTYPE
+ #define EFTYPE EINVAL
+@@ -51,10 +57,6 @@
+ 
+ #include "cdf.h"
+ 
+-#ifndef __arraycount
+-#define __arraycount(a) (sizeof(a) / sizeof(a[0]))
+-#endif
+-
+ #ifdef CDF_DEBUG
+ #define DPRINTF(a) printf a, fflush(stdout)
+ #else
+@@ -68,19 +70,21 @@ static union {
+ 
+ #define NEED_SWAP	(cdf_bo.u == (uint32_t)0x01020304)
+ 
+-#define CDF_TOLE8(x)	(NEED_SWAP ? cdf_tole8(x) : (uint64_t)(x))
+-#define CDF_TOLE4(x)	(NEED_SWAP ? cdf_tole4(x) : (uint32_t)(x))
+-#define CDF_TOLE2(x)	(NEED_SWAP ? cdf_tole2(x) : (uint16_t)(x))
++#define CDF_TOLE8(x)	((uint64_t)(NEED_SWAP ? _cdf_tole8(x) : (uint64_t)(x)))
++#define CDF_TOLE4(x)	((uint32_t)(NEED_SWAP ? _cdf_tole4(x) : (uint32_t)(x)))
++#define CDF_TOLE2(x)	((uint16_t)(NEED_SWAP ? _cdf_tole2(x) : (uint16_t)(x)))
++#define CDF_GETUINT32(x, y)	cdf_getuint32(x, y)
+ 
++
+ /*
+  * swap a short
+  */
+-uint16_t
+-cdf_tole2(uint16_t sv)
++static uint16_t
++_cdf_tole2(uint16_t sv)
+ {
+ 	uint16_t rv;
+-	uint8_t *s = (uint8_t *)(void *)&sv; 
+-	uint8_t *d = (uint8_t *)(void *)&rv; 
++	uint8_t *s = (uint8_t *)(void *)&sv;
++	uint8_t *d = (uint8_t *)(void *)&rv;
+ 	d[0] = s[1];
+ 	d[1] = s[0];
+ 	return rv;
+@@ -89,12 +93,12 @@ static union {
+ /*
+  * swap an int
+  */
+-uint32_t
+-cdf_tole4(uint32_t sv)
++static uint32_t
++_cdf_tole4(uint32_t sv)
+ {
+ 	uint32_t rv;
+-	uint8_t *s = (uint8_t *)(void *)&sv; 
+-	uint8_t *d = (uint8_t *)(void *)&rv; 
++	uint8_t *s = (uint8_t *)(void *)&sv;
++	uint8_t *d = (uint8_t *)(void *)&rv;
+ 	d[0] = s[3];
+ 	d[1] = s[2];
+ 	d[2] = s[1];
+@@ -105,12 +109,12 @@ static union {
+ /*
+  * swap a quad
+  */
+-uint64_t
+-cdf_tole8(uint64_t sv)
++static uint64_t
++_cdf_tole8(uint64_t sv)
+ {
+ 	uint64_t rv;
+-	uint8_t *s = (uint8_t *)(void *)&sv; 
+-	uint8_t *d = (uint8_t *)(void *)&rv; 
++	uint8_t *s = (uint8_t *)(void *)&sv;
++	uint8_t *d = (uint8_t *)(void *)&rv;
+ 	d[0] = s[7];
+ 	d[1] = s[6];
+ 	d[2] = s[5];
+@@ -122,11 +126,41 @@ static union {
+ 	return rv;
+ }
+ 
++/*

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-doc-head mailing list