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 <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.doc
Message-ID <[email protected]>
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 ***
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-doc-all
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.