Index: head/share/security/advisories/FreeBSD-SA-16:27.openssl.asc =================================================================== --- head/share/security/advisories/FreeBSD-SA-16:27.openssl.asc (nonexistent) +++ head/share/security/advisories/FreeBSD-SA-16:27.openssl.asc (revision 49477) @@ -0,0 +1,132 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-16:27.openssl Security Advisory + The FreeBSD Project + +Topic: Regression in OpenSSL suite + +Category: contrib +Module: openssl +Announced: 2016-10-10 +Credits: OpenSSL Project +Affects: All supported versions of FreeBSD. +Corrected: 2016-09-26 14:30:19 UTC (stable/11, 11.0-STABLE) + 2016-09-26 20:26:19 UTC (releng/11.0, 11.0-RELEASE-p1) +CVE Name: CVE-2016-7052 + +For general information regarding FreeBSD Security Advisories, +including descriptions of the fields above, security branches, and the +following sections, please visit . + +I. Background + +FreeBSD includes software from the OpenSSL Project. The OpenSSL Project is +a collaborative effort to develop a robust, commercial-grade, full-featured +Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) +and Transport Layer Security (TLS v1) protocols as well as a full-strength +general purpose cryptography library. + +II. Problem Description + +The OpenSSL version included in FreeBSD 11.0-RELEASE is 1.0.2i. The version +has bug fix for CVE-2016-7052, which should have included CRL sanity check, +but the check was omitted. + +III. Impact + +Any attempt to use CRLs in OpenSSL 1.0.2i will crash with a null pointer +exception. + +IV. Workaround + +No workaround is available. + +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. + +Restart all daemons that use the library, or reboot the system. + +2) 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 + +Restart all daemons that use the library, or reboot the system. + +3) 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. + +# fetch https://security.FreeBSD.org/patches/SA-16:27/openssl.patch +# fetch https://security.FreeBSD.org/patches/SA-16:27/openssl.patch.asc +# gpg --verify openssl.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 . + +Restart all daemons that use the library, or reboot the system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/11/ r306343 +releng/11.0/ r306354 +- ------------------------------------------------------------------------- + +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: + + + +VII. References + + + + + +The latest revision of this advisory is available at + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAEBCgAGBQJX+0OlAAoJEO1n7NZdz2rnEPYQAOewieypFMknEi5Q02IBVhcC +Bs1sczFLXaSz+4c9lNRi+m6Q5TXbW0MM9ZhZDnoLOXZ9OZ7DsQ0OVJcmWPHCSTkT +WAlZgiB5B2xtZpLUNi0XAVPyegh+YxWCKa5mq/e4gC7BL+QhtTQqIlzsNylBDcI0 +2Tp5fPfO3vIJlSwPpsUA2peYlm2c75/dusE0+bvWnqickWbEmFdCAd8rzTLrsm9R +w5essD2o6BzFPA9j+3X/LNaMI6ZKKa4EkaXXB42KHruDfNTV8dmYL/LLxWs6aj1f +Li++71GPh3aZZCA5SCo6NYdI25kg4xORZzqUmYzT856kdmpaemLd8oVT8/ojOCTX +CoNtA9yVphhYgfSGLy2BIs0u7U3H16SVjZ1oC5MjTAY6kUsEDt6x2vlKOt5452yN +3v2fHf9I8/ibgo4d4ovpGGzvrj/8EfodmDLhjYP5RcwZH4FW1jCUzXTflsYmPWMi +8+COC+K19MNIXR0M8ajs2M8z2ILc3pOUZ1sdrNhU1jEIyYCl8EDMEU0Bc13XlUKS +UE92RKfxIAMh+Zyu44++8UizfOorBVKhQVd+9NthMnfXW6xlnwujjbabam8k2E5V +Za4sBQ57JvL9aKrsbmB/hhVnxXE6jYqtp7tagXK+wwULO1SarpRp7HENd50ggH5l +yu2DM4rkIcwzTaJEdvyT +=5rNc +-----END PGP SIGNATURE----- Property changes on: head/share/security/advisories/FreeBSD-SA-16:27.openssl.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/advisories/FreeBSD-SA-16:28.bind.asc =================================================================== --- head/share/security/advisories/FreeBSD-SA-16:28.bind.asc (nonexistent) +++ head/share/security/advisories/FreeBSD-SA-16:28.bind.asc (revision 49477) @@ -0,0 +1,138 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-16:28.bind Security Advisory + The FreeBSD Project + +Topic: BIND remote Denial of Service vulnerability + +Category: contrib +Module: bind +Announced: 2016-10-10 +Credits: ISC +Affects: FreeBSD 9.x +Corrected: 2016-09-28 06:11:01 UTC (stable/9, 9.3-STABLE) + 2016-10-10 07:19:16 UTC (releng/9.3, 9.3-RELEASE-p48) +CVE Name: CVE-2016-2776 + +For general information regarding FreeBSD Security Advisories, +including descriptions of the fields above, security branches, and the +following sections, please visit . + +I. Background + +BIND 9 is an implementation of the Domain Name System (DNS) protocols. +The named(8) daemon is an Internet Domain Name Server. + +II. Problem Description + +Testing by ISC has uncovered a critical error condition which can occur when +a nameserver is constructing a response. A defect in the rendering of +messages into packets can cause named to exit with an assertion failure in +buffer.c while constructing a response to a query that meets certain +criteria. + +This assertion can be triggered even if the apparent source address is not +allowed to make queries (i.e. doesn't match 'allow-query'). [CVE-2016-2776] + +III. Impact + +A remote attacker who can send queries to a server running BIND can cause +the server to crash, resulting in a Denial of Service condition. + +IV. Workaround + +No workaround is available, but hosts not running named(8) 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. + +The named service has to be restarted after the update. A reboot is +recommended but not required. + +2) 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 + +The named service has to be restarted after the update. A reboot is +recommended but not required. + +3) 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.3] +# fetch https://security.FreeBSD.org/patches/SA-16:28/bind.patch +# fetch https://security.FreeBSD.org/patches/SA-16:28/bind.patch.asc +# gpg --verify bind.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 . + +Restart the named service, or reboot the system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/9/ r306394 +releng/9.3/ r306942 +- ------------------------------------------------------------------------- + +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: + + + +VII. References + + + + + +The latest revision of this advisory is available at + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAEBCgAGBQJX+0OlAAoJEO1n7NZdz2rnt/cQAJJ/P9/cNH4mB3Oq9kks1TJI +thye1Bmd6BAS16UYj+S2POSkrwkTJLhg/Rtch/4O1TUJ7q86Dko/0nciF/4Qin/J +LrNhX2TUUTpQygfWdzTqdk9EiHLKT46sNh1Two4Lb9gMuBulES9Fy40gj8y81ypv +uys05i6DMAlY/EsmidTHFKUGGC9160XLS7wFWnlw9XglDHn2+pIDALHl77mmoXwR +VKiCbGO6IybDV5bATh12eflCSb+IJRT0MMOwJAt3Nhzp//7t2tf+izazzfs43IH4 +HRkiDfkkxqAMus6h0Dm4xR91oe/oSzlEedKFM3ctHfQqyIi+AP0FKixf8pS72n7o +M0W5vIbkMSuTsiOTzyQUJpQ3tExvWeZjhNZj9U5trs2YNdPCRaM3pETUdF6GZmNC +tnPiTZFst3ARsy/4oJg8Eeo/cyrd/sfPm4fXCbXkakL7ml/Mu+/KEyq5qw43FIXn +96/btRfHsPSpy74KRtLsqSM29eCK9puGhJIk1iBtuhuTvze/48Od7U5zWOjn8XiS +o4oOyCtm3nQfB8VIzfypFAIUFFOqfHmsfP3s51J9tUXjxvORO3UWD3/R2wXLre2Y +Z5+s7IUhesunZztGtaUFCqG28KCrzmSiIVXGRd/IsQCuTJ4DNiUFZofKYdI0B7fE +hrSETFwDg/OYusZ5/96D +=v9vM +-----END PGP SIGNATURE----- Property changes on: head/share/security/advisories/FreeBSD-SA-16:28.bind.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/advisories/FreeBSD-SA-16:29.bspatch.asc =================================================================== --- head/share/security/advisories/FreeBSD-SA-16:29.bspatch.asc (nonexistent) +++ head/share/security/advisories/FreeBSD-SA-16:29.bspatch.asc (revision 49477) @@ -0,0 +1,146 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-16:29.bspatch Security Advisory + The FreeBSD Project + +Topic: Heap overflow vulnerability in bspatch + +Category: core +Module: bsdiff +Announced: 2016-10-10 +Affects: All supported versions of FreeBSD. + 2016-09-22 21:05:21 UTC (stable/11, 11.0-STABLE) + 2016-09-27 19:36:12 UTC (releng/11.0, 11.0-RELEASE-p1) + 2016-09-22 21:16:54 UTC (stable/10, 10.3-STABLE) + 2016-10-10 07:18:54 UTC (releng/10.3, 10.3-RELEASE-p10) + 2016-10-10 07:18:54 UTC (releng/10.2, 10.2-RELEASE-p23) + 2016-10-10 07:18:54 UTC (releng/10.1, 10.1-RELEASE-p40) + 2016-09-23 01:52:06 UTC (stable/9, 9.3-STABLE) + 2016-10-10 07:19:16 UTC (releng/9.3, 9.3-RELEASE-p48) + +For general information regarding FreeBSD Security Advisories, +including descriptions of the fields above, security branches, and the +following sections, please visit . + +I. Background + +The bspatch utility generates newfile from oldfile and patchfile where +patchfile is a binary patch built by bsdiff(1). + +II. Problem Description + +The implementation of bspatch is susceptible to integer overflows with +carefully crafted input, potentially allowing an attacker who can control +the patch file to write at arbitrary locations in the heap. This issue +was partially addressed in FreeBSD-SA-16:25.bspatch, but some possible +integer overflows remained. + +III. Impact + +An attacker who can control the patch file can cause a crash or run arbitrary +code under the credentials of the user who runs bspatch, in many cases, root. + +IV. Workaround + +No workaround is available. + +V. Solution + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date. + +No reboot is needed. + +Perform one of the following: + +1) 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. + +Because this vulnerability exists in bspatch, a component used by +freebsd-update, a special procedure must be followed to safely update. +First, truncate bspatch to a zero byte file: + +# :> /usr/bin/bspatch + +FreeBSD-update will fall back to replacing bspatch, rather than applying +a binary patch. Proceed with FreeBSD-update as usual: + +# freebsd-update fetch +# freebsd-update install + +No reboot is needed. + +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. + +# fetch https://security.FreeBSD.org/patches/SA-16:29/bspatch.patch +# fetch https://security.FreeBSD.org/patches/SA-16:29/bspatch.patch.asc +# gpg --verify bspatch.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 . + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/9/ r306222 +releng/9.3/ r306942 +stable/10/ r306215 +releng/10.1/ r306941 +releng/10.2/ r306941 +releng/10.3/ r306941 +stable/11/ r306213 +releng/11.0/ r306379 +- ------------------------------------------------------------------------- + +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: + + + +VII. References + + + +The latest revision of this advisory is available at + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAEBCgAGBQJX+0OmAAoJEO1n7NZdz2rnMHQQALyzQ6rIFLMV+qfIKr/dxUmv +frrY3rE8GbHNI6UYnlB7T97SZBVG2lOGpUO7sGNzsqAol+aBEn44mX88ijCQk+mc +pIHcbwACkAG6u5c6nyelHAa3ZLc8PkPbNaryjfc9Y0vZxGFKI5ETpdN1nFxUBKRA +eGt4h4GW3ZxHTkc3DDogDM6kBds3DYAnQjnqvkH6QesM/cMIdnU2NMjIrYDdtcsJ +Mp92PqRl8/qCZxcpfoHSl3S190Dmu9KNjEwXdk8gvtr7aTe/OG9fcIOAwIJHMi/n +E3tojTrSGLl0v9yuznG8rU0Hr6VyFNRv9i5QhPEQF4ZQ0HT2/naV0v/THMB1JdeR +8rszvO8HIdYkKEYPEp4RZ+QWJX36xK0ZOA0BSF3+OW6VYMIEB+iMvK1xAlGWmyJq +D6f5AQuw559o4MNZ9gh1tXl+PXjYHvwSOrHb1EZ7mDZ3zVarn8TwUjxaE2ILIhjW +wS+wqbxZt1eENfKbhLHxSavIE+Bi59ab/iymmOFtFdgDDDpQhzx13MUFM17v270g +1OCXnx7HLMIr5ibndJBQbjPmZT0InMM9856Hij8UhcFjyFpytCJie7sVcDFG9nNp +z3VXrSIdEIA5MwaD6MYGW8nUfBwQnD/rSh6t2Tt4qz24FPk9K9pbzpb8CDIOImiF +GnLZXJQlgmJ55XOa0EgR +=uRNW +-----END PGP SIGNATURE----- Property changes on: head/share/security/advisories/FreeBSD-SA-16:29.bspatch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/advisories/FreeBSD-SA-16:30.portsnap.asc =================================================================== --- head/share/security/advisories/FreeBSD-SA-16:30.portsnap.asc (nonexistent) +++ head/share/security/advisories/FreeBSD-SA-16:30.portsnap.asc (revision 49477) @@ -0,0 +1,149 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-16:30.portsnap Security Advisory + The FreeBSD Project + +Topic: Multiple portsnap vulnerabilities + +Category: core +Module: portsnap +Announced: 2016-10-10 +Affects: All supported versions of FreeBSD. +Corrected: 2016-09-28 21:33:35 UTC (stable/11, 11.0-STABLE) + 2016-09-28 22:04:07 UTC (releng/11.0, 11.0-RELEASE-p1) + 2016-10-05 00:33:06 UTC (stable/10, 10.3-STABLE) + 2016-10-10 07:18:54 UTC (releng/10.3, 10.3-RELEASE-p10) + 2016-10-10 07:18:54 UTC (releng/10.2, 10.2-RELEASE-p23) + 2016-10-10 07:18:54 UTC (releng/10.1, 10.1-RELEASE-p40) + 2016-10-05 01:01:10 UTC (stable/9, 9.3-STABLE) + 2016-10-10 07:19:16 UTC (releng/9.3, 9.3-RELEASE-p48) + +For general information regarding FreeBSD Security Advisories, +including descriptions of the fields above, security branches, and the +following sections, please visit . + +I. Background + +The portsnap utility is used to fetch and update compressed snapshots of +the FreeBSD ports tree. Portsnap fetches snapshots and updates over http, +and then cryptographically verifies the downloaded files. + +II. Problem Description + +Flaws in portsnap's verification of downloaded tar files allows additional +files to be included without causing the verification to fail. Portsnap may +then use or execute these files. + +III. Impact + +An attacker who can conduct man in the middle attack on the network at the +time when portsnap is run can cause portsnap to execute arbitrary commands +under the credentials of the user who runs portsnap, typically root. + +IV. Workaround + +The ports tree may be obtained by methods other than portsnap, as +described in the FreeBSD handbook. + +V. Solution + +portsnap has been modified to explicitly validate compressed files within +the tar file by full name, rather than relying on gunzip's filename search +logic. portsnap now verifies that snapshots contain only the expected files. + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date. + +No reboot is needed. + +Perform one of the following: + +1) 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. + +This advisory is released concurrently with FreeBSD-SA-16:29.bspatch +which contains special instructions for using freebsd-update. Following +the instructions in that advisory will safely apply updates for +FreeBSD-SA-16:29.bspatch, FreeBSD-SA-16:30.portsnap, and +FreeBSD-SA-16:31.libarchive. + +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.x] +# fetch https://security.FreeBSD.org/patches/SA-16:30/portsnap-10.patch +# fetch https://security.FreeBSD.org/patches/SA-16:30/portsnap-10.patch.asc +# gpg --verify portsnap-10.patch.asc + +[FreeBSD 9.3] +# fetch https://security.FreeBSD.org/patches/SA-16:30/portsnap-9.3.patch +# fetch https://security.FreeBSD.org/patches/SA-16:30/portsnap-9.3.patch.asc +# gpg --verify portsnap-9.3.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 . + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/9/ r306701 +releng/9.3/ r306942 +stable/10/ r306697 +releng/10.1/ r306941 +releng/10.2/ r306941 +releng/10.3/ r306941 +stable/11/ r306418 +releng/11.0/ r306419 +- ------------------------------------------------------------------------- + +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: + + + +VII. References + + + +The latest revision of this advisory is available at + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAEBCgAGBQJX+0OqAAoJEO1n7NZdz2rns54P/3N6V4ZGWZ8jXDSw7KPRhF16 +gUs2AQx+rL+o5rOVsMZ6DulVtFP+AzUvEsLIJeARdaOJar9St1cQVTZHa+8CtWr5 +aCSgx5r39srcvvMuQ34z0yss7eEkHRubzkIzrjHcD6MweFg4tAIufXHgxmhNVuKp +QOQCwUbWIp8MssNbd/nYr1fpNoEvhkuzEv+EsvU+gTXeYNbHDS8zN/XC1a4167Q9 +flFCqVn45ZpYR+2ifeLv0s+Rj4MQdnaCUYPpt1JoY5pIr/1GbNuywam9YgUQJZ7o +gbY+S9Un0aByEOmPgD2e6qb8qhQFtaJgAbhB51dsI/qpZUljQKERmV1vd78drqWB +1gss/MFe5oyxZ5IbmHLBabIcKvvtH72gSaD8Zp973TbD72usjC/ZfdkukNBlWkbm +M4PFTK+VQA1y5c8R2RduVoz3ioaBtRisxqqGOi0i3AUgiWx6IeP9jkIana28dGtJ +Mkm4ZiWBj12lT5B+gafpy7+bLkbYl2sEFYIt+YUlJ1GqAumyDnnmYt5rDhZwMLFo +7ywCpCwtoBc49sCV7szV4MdFw0Zmo8tT0uiWBehferN1SHygKVNGnXIj+NotRXx0 +mp0j7pgK4AcML2y7pJLEUwyWUKE5tBkPKmHg+4ELhqPb0mjm+A+KHX/8vXxlPpRJ +2yVhfIubEhECQJeJKAqm +=y+kG +-----END PGP SIGNATURE----- Property changes on: head/share/security/advisories/FreeBSD-SA-16:30.portsnap.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/advisories/FreeBSD-SA-16:31.libarchive.asc =================================================================== --- head/share/security/advisories/FreeBSD-SA-16:31.libarchive.asc (nonexistent) +++ head/share/security/advisories/FreeBSD-SA-16:31.libarchive.asc (revision 49477) @@ -0,0 +1,136 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-16:31.libarchive Security Advisory + The FreeBSD Project + +Topic: Multiple libarchive vulnerabilities + +Category: core +Module: portsnap +Announced: 2016-10-05 +Affects: All supported versions of FreeBSD. +Corrected: 2016-09-25 22:02:27 UTC (stable/11, 11.0-STABLE) + 2016-09-27 19:36:12 UTC (releng/11.0, 11.0-RELEASE-p1) + 2016-09-25 22:04:02 UTC (stable/10, 10.3-STABLE) + 2016-10-10 07:18:54 UTC (releng/10.3, 10.3-RELEASE-p10) + 2016-10-10 07:18:54 UTC (releng/10.2, 10.2-RELEASE-p23) + 2016-10-10 07:18:54 UTC (releng/10.1, 10.1-RELEASE-p40) + +For general information regarding FreeBSD Security Advisories, +including descriptions of the fields above, security branches, and the +following sections, please visit . + +I. Background + +The libarchive(3) library provides a flexible interface for reading and +writing streaming archive files such as tar(1) and cpio(1), and has been the +basis for the FreeBSD implementation of the tar(1) and cpio(1) utilities +since FreeBSD 5.3. + +II. Problem Description + +Flaws in libarchive's handling of symlinks and hard links allow overwriting +files outside the extraction directory, or permission changes to a directory +outside the extraction directory. + +III. Impact + +An attacker who can control freebsd-update's or portsnap's input to tar can +change file content or permisssions on files outside of the update tool's +working sandbox. + +IV. Workaround + +No workaround is available. + +V. Solution + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date. + +No reboot is needed. + +Perform one of the following: + +1) 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. + +This advisory is released concurrently with FreeBSD-SA-16:29.bspatch +which contains special instructions for using freebsd-update. Following +the instructions in that advisory will safely apply updates for +FreeBSD-SA-16:29.bspatch, FreeBSD-SA-16:30.portsnap, and +FreeBSD-SA-16:31.libarchive. + +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. + +# fetch https://security.FreeBSD.org/patches/SA-16:31/libarchive.patch +# fetch https://security.FreeBSD.org/patches/SA-16:31/libarchive.patch.asc +# gpg --verify libarchive.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 . + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/10/ r306322 +releng/10.1/ r306941 +releng/10.2/ r306941 +releng/10.3/ r306941 +stable/11/ r306321 +releng/11.0/ r306379 +- ------------------------------------------------------------------------- + +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: + + + +VII. References + + + + +The latest revision of this advisory is available at + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAEBCgAGBQJX+0OrAAoJEO1n7NZdz2rnkaAP/i5Njok8Lg3ogwRGVo/HVQfA +AzRz2oQ5oAuwZhmpkQ3CzHArRsaTGuKK5C1SNJpmEDuq5XM2u5Td2ph/R5ry0fwF +7B58Ci+o7ngRWtJ/N8dYk3cXfg0sjPZKDO1otIyfh8HF3UAq5uB3/w/8UFOpqcxQ +guMKahd/r9PnfrD8GtS+t/2V+KHInNH0J4YD/+hoqcdZPzMKtlE5D5OjqOov9rVn +myQwAuN+w2buPj2gXSuubq5wTNFOvj8u06mVpRj+0X0VoybdN5cohuqSx7s4vlw+ +/qV7gT2993aijXp43dGGSUeuGl1ZbrKp233vntkIYrsjJzaw56YMHL3ushopGGhj +OfC/ilXmsUjrlHgCrWpMiTuN7cdWDXrpMnaf4c99yMxdYUuRtbbnVthdOpZB8iOt +7xeVnvHiYTYbQu+4xy4SPOWqPLOnrbwVqIocXU1QjWJice5A3EU/mSAd2IpX04a2 +prdlaGxBNZlziLgzsZoiER+5u0S3owbx7y2SVhMEslHyrRQ92X7SZjfu4NrvlX5k +Dw6xjpHD51pshj4GXTPuznbCyd8246u1fRnH3fnlNLhz5/XhrYbG+OVQ9WDbnX2C +6SzS/oOcjA9qcq1+Ghmz6G7S2MuWZ0XcKfzV0ygX2RZEhU1p0rZfsF/2cGrKIGY1 +JguXI1tZdrjfSZisAI+l +=vqSJ +-----END PGP SIGNATURE----- Property changes on: head/share/security/advisories/FreeBSD-SA-16:31.libarchive.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:27/openssl.patch =================================================================== --- head/share/security/patches/SA-16:27/openssl.patch (nonexistent) +++ head/share/security/patches/SA-16:27/openssl.patch (revision 49477) @@ -0,0 +1,4151 @@ +--- crypto/openssl/crypto/engine/eng_cryptodev.c.orig ++++ crypto/openssl/crypto/engine/eng_cryptodev.c +@@ -939,7 +939,7 @@ + if (fstate->mac_len != 0) { + if (fstate->mac_data != NULL) { + dstate->mac_data = OPENSSL_malloc(fstate->mac_len); +- if (dstate->ac_data == NULL) { ++ if (dstate->mac_data == NULL) { + printf("cryptodev_digest_init: malloc failed\n"); + return 0; + } +--- crypto/openssl/crypto/x509/x509_vfy.c.orig ++++ crypto/openssl/crypto/x509/x509_vfy.c +@@ -1124,10 +1124,10 @@ + crl = sk_X509_CRL_value(crls, i); + reasons = *preasons; + crl_score = get_crl_score(ctx, &crl_issuer, &reasons, crl, x); +- if (crl_score < best_score) ++ if (crl_score < best_score || crl_score == 0) + continue; + /* If current CRL is equivalent use it if it is newer */ +- if (crl_score == best_score) { ++ if (crl_score == best_score && best_crl != NULL) { + int day, sec; + if (ASN1_TIME_diff(&day, &sec, X509_CRL_get_lastUpdate(best_crl), + X509_CRL_get_lastUpdate(crl)) == 0) +--- crypto/openssl/crypto/opensslv.h.orig ++++ crypto/openssl/crypto/opensslv.h +@@ -30,11 +30,11 @@ + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +-# define OPENSSL_VERSION_NUMBER 0x1000209fL ++# define OPENSSL_VERSION_NUMBER 0x100020afL + # ifdef OPENSSL_FIPS +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2i-fips 22 Sep 2016" ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2j-fips 26 Sep 2016" + # else +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2i-freebsd 22 Sep 2016" ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2j-freebsd 26 Sep 2016" + # endif + # define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT + +--- crypto/openssl/ssl/t1_ext.c.orig ++++ crypto/openssl/ssl/t1_ext.c +@@ -275,7 +275,9 @@ + case TLSEXT_TYPE_ec_point_formats: + case TLSEXT_TYPE_elliptic_curves: + case TLSEXT_TYPE_heartbeat: ++# ifndef OPENSSL_NO_NEXTPROTONEG + case TLSEXT_TYPE_next_proto_neg: ++# endif + case TLSEXT_TYPE_padding: + case TLSEXT_TYPE_renegotiate: + case TLSEXT_TYPE_server_name: +--- crypto/openssl/CHANGES.orig ++++ crypto/openssl/CHANGES +@@ -2,6 +2,18 @@ + OpenSSL CHANGES + _______________ + ++ Changes between 1.0.2i and 1.0.2j [26 Sep 2016] ++ ++ *) Missing CRL sanity check ++ ++ A bug fix which included a CRL sanity check was added to OpenSSL 1.1.0 ++ but was omitted from OpenSSL 1.0.2i. As a result any attempt to use ++ CRLs in OpenSSL 1.0.2i will crash with a null pointer exception. ++ ++ This issue only affects the OpenSSL 1.0.2i ++ (CVE-2016-7052) ++ [Matt Caswell] ++ + Changes between 1.0.2h and 1.0.2i [22 Sep 2016] + + *) OCSP Status Request extension unbounded memory growth +--- crypto/openssl/Makefile.orig ++++ crypto/openssl/Makefile +@@ -4,7 +4,7 @@ + ## Makefile for OpenSSL + ## + +-VERSION=1.0.2i ++VERSION=1.0.2j + MAJOR=1 + MINOR=0.2 + SHLIB_VERSION_NUMBER=1.0.0 +--- crypto/openssl/NEWS.orig ++++ crypto/openssl/NEWS +@@ -5,6 +5,10 @@ + This file gives a brief overview of the major changes between each OpenSSL + release. For more details please read the CHANGES file. + ++ Major changes between OpenSSL 1.0.2i and OpenSSL 1.0.2j [26 Sep 2016] ++ ++ o Fix Use After Free for large message sizes (CVE-2016-6309) ++ + Major changes between OpenSSL 1.0.2h and OpenSSL 1.0.2i [22 Sep 2016] + + o OCSP Status Request extension unbounded memory growth (CVE-2016-6304) +--- crypto/openssl/README.orig ++++ crypto/openssl/README +@@ -1,5 +1,5 @@ + +- OpenSSL 1.0.2i 22 Sep 2016 ++ OpenSSL 1.0.2j 26 Sep 2016 + + Copyright (c) 1998-2015 The OpenSSL Project + Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson +--- secure/lib/libcrypto/man/ASN1_OBJECT_new.3.orig ++++ secure/lib/libcrypto/man/ASN1_OBJECT_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1_OBJECT_new 3" +-.TH ASN1_OBJECT_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1_OBJECT_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ASN1_STRING_length.3.orig ++++ secure/lib/libcrypto/man/ASN1_STRING_length.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1_STRING_length 3" +-.TH ASN1_STRING_length 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1_STRING_length 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ASN1_STRING_new.3.orig ++++ secure/lib/libcrypto/man/ASN1_STRING_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1_STRING_new 3" +-.TH ASN1_STRING_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1_STRING_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ASN1_STRING_print_ex.3.orig ++++ secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1_STRING_print_ex 3" +-.TH ASN1_STRING_print_ex 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1_STRING_print_ex 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ASN1_TIME_set.3.orig ++++ secure/lib/libcrypto/man/ASN1_TIME_set.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1_TIME_set 3" +-.TH ASN1_TIME_set 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1_TIME_set 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ASN1_generate_nconf.3.orig ++++ secure/lib/libcrypto/man/ASN1_generate_nconf.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1_generate_nconf 3" +-.TH ASN1_generate_nconf 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1_generate_nconf 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_ctrl.3.orig ++++ secure/lib/libcrypto/man/BIO_ctrl.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_ctrl 3" +-.TH BIO_ctrl 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_ctrl 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_f_base64.3.orig ++++ secure/lib/libcrypto/man/BIO_f_base64.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_f_base64 3" +-.TH BIO_f_base64 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_f_base64 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_f_buffer.3.orig ++++ secure/lib/libcrypto/man/BIO_f_buffer.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_f_buffer 3" +-.TH BIO_f_buffer 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_f_buffer 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_f_cipher.3.orig ++++ secure/lib/libcrypto/man/BIO_f_cipher.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_f_cipher 3" +-.TH BIO_f_cipher 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_f_cipher 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_f_md.3.orig ++++ secure/lib/libcrypto/man/BIO_f_md.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_f_md 3" +-.TH BIO_f_md 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_f_md 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_f_null.3.orig ++++ secure/lib/libcrypto/man/BIO_f_null.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_f_null 3" +-.TH BIO_f_null 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_f_null 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_f_ssl.3.orig ++++ secure/lib/libcrypto/man/BIO_f_ssl.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_f_ssl 3" +-.TH BIO_f_ssl 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_f_ssl 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_find_type.3.orig ++++ secure/lib/libcrypto/man/BIO_find_type.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_find_type 3" +-.TH BIO_find_type 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_find_type 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_new.3.orig ++++ secure/lib/libcrypto/man/BIO_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_new 3" +-.TH BIO_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_new_CMS.3.orig ++++ secure/lib/libcrypto/man/BIO_new_CMS.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_new_CMS 3" +-.TH BIO_new_CMS 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_new_CMS 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_push.3.orig ++++ secure/lib/libcrypto/man/BIO_push.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_push 3" +-.TH BIO_push 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_push 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_read.3.orig ++++ secure/lib/libcrypto/man/BIO_read.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_read 3" +-.TH BIO_read 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_read 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_accept.3.orig ++++ secure/lib/libcrypto/man/BIO_s_accept.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_accept 3" +-.TH BIO_s_accept 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_accept 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_bio.3.orig ++++ secure/lib/libcrypto/man/BIO_s_bio.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_bio 3" +-.TH BIO_s_bio 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_bio 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_connect.3.orig ++++ secure/lib/libcrypto/man/BIO_s_connect.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_connect 3" +-.TH BIO_s_connect 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_connect 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_fd.3.orig ++++ secure/lib/libcrypto/man/BIO_s_fd.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_fd 3" +-.TH BIO_s_fd 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_fd 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_file.3.orig ++++ secure/lib/libcrypto/man/BIO_s_file.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_file 3" +-.TH BIO_s_file 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_file 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_mem.3.orig ++++ secure/lib/libcrypto/man/BIO_s_mem.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_mem 3" +-.TH BIO_s_mem 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_mem 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_null.3.orig ++++ secure/lib/libcrypto/man/BIO_s_null.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_null 3" +-.TH BIO_s_null 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_null 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_s_socket.3.orig ++++ secure/lib/libcrypto/man/BIO_s_socket.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_s_socket 3" +-.TH BIO_s_socket 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_s_socket 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_set_callback.3.orig ++++ secure/lib/libcrypto/man/BIO_set_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_set_callback 3" +-.TH BIO_set_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_set_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BIO_should_retry.3.orig ++++ secure/lib/libcrypto/man/BIO_should_retry.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BIO_should_retry 3" +-.TH BIO_should_retry 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BIO_should_retry 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_BLINDING_new.3.orig ++++ secure/lib/libcrypto/man/BN_BLINDING_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_BLINDING_new 3" +-.TH BN_BLINDING_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_BLINDING_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_CTX_new.3.orig ++++ secure/lib/libcrypto/man/BN_CTX_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_CTX_new 3" +-.TH BN_CTX_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_CTX_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_CTX_start.3.orig ++++ secure/lib/libcrypto/man/BN_CTX_start.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_CTX_start 3" +-.TH BN_CTX_start 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_CTX_start 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_add.3.orig ++++ secure/lib/libcrypto/man/BN_add.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_add 3" +-.TH BN_add 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_add 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_add_word.3.orig ++++ secure/lib/libcrypto/man/BN_add_word.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_add_word 3" +-.TH BN_add_word 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_add_word 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_bn2bin.3.orig ++++ secure/lib/libcrypto/man/BN_bn2bin.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_bn2bin 3" +-.TH BN_bn2bin 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_bn2bin 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_cmp.3.orig ++++ secure/lib/libcrypto/man/BN_cmp.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_cmp 3" +-.TH BN_cmp 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_cmp 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_copy.3.orig ++++ secure/lib/libcrypto/man/BN_copy.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_copy 3" +-.TH BN_copy 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_copy 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_generate_prime.3.orig ++++ secure/lib/libcrypto/man/BN_generate_prime.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_generate_prime 3" +-.TH BN_generate_prime 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_generate_prime 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_mod_inverse.3.orig ++++ secure/lib/libcrypto/man/BN_mod_inverse.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_mod_inverse 3" +-.TH BN_mod_inverse 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_mod_inverse 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_mod_mul_montgomery.3.orig ++++ secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_mod_mul_montgomery 3" +-.TH BN_mod_mul_montgomery 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_mod_mul_montgomery 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3.orig ++++ secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_mod_mul_reciprocal 3" +-.TH BN_mod_mul_reciprocal 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_mod_mul_reciprocal 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_new.3.orig ++++ secure/lib/libcrypto/man/BN_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_new 3" +-.TH BN_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_num_bytes.3.orig ++++ secure/lib/libcrypto/man/BN_num_bytes.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_num_bytes 3" +-.TH BN_num_bytes 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_num_bytes 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_rand.3.orig ++++ secure/lib/libcrypto/man/BN_rand.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_rand 3" +-.TH BN_rand 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_rand 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_set_bit.3.orig ++++ secure/lib/libcrypto/man/BN_set_bit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_set_bit 3" +-.TH BN_set_bit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_set_bit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_swap.3.orig ++++ secure/lib/libcrypto/man/BN_swap.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_swap 3" +-.TH BN_swap 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_swap 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/BN_zero.3.orig ++++ secure/lib/libcrypto/man/BN_zero.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "BN_zero 3" +-.TH BN_zero 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH BN_zero 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_add0_cert.3.orig ++++ secure/lib/libcrypto/man/CMS_add0_cert.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_add0_cert 3" +-.TH CMS_add0_cert 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_add0_cert 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_add1_recipient_cert.3.orig ++++ secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_add1_recipient_cert 3" +-.TH CMS_add1_recipient_cert 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_add1_recipient_cert 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_add1_signer.3.orig ++++ secure/lib/libcrypto/man/CMS_add1_signer.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_add1_signer 3" +-.TH CMS_add1_signer 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_add1_signer 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_compress.3.orig ++++ secure/lib/libcrypto/man/CMS_compress.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_compress 3" +-.TH CMS_compress 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_compress 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_decrypt.3.orig ++++ secure/lib/libcrypto/man/CMS_decrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_decrypt 3" +-.TH CMS_decrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_decrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_encrypt.3.orig ++++ secure/lib/libcrypto/man/CMS_encrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_encrypt 3" +-.TH CMS_encrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_encrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_final.3.orig ++++ secure/lib/libcrypto/man/CMS_final.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_final 3" +-.TH CMS_final 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_final 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3.orig ++++ secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_get0_RecipientInfos 3" +-.TH CMS_get0_RecipientInfos 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_get0_RecipientInfos 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_get0_SignerInfos.3.orig ++++ secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_get0_SignerInfos 3" +-.TH CMS_get0_SignerInfos 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_get0_SignerInfos 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_get0_type.3.orig ++++ secure/lib/libcrypto/man/CMS_get0_type.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_get0_type 3" +-.TH CMS_get0_type 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_get0_type 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3.orig ++++ secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_get1_ReceiptRequest 3" +-.TH CMS_get1_ReceiptRequest 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_get1_ReceiptRequest 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_sign.3.orig ++++ secure/lib/libcrypto/man/CMS_sign.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_sign 3" +-.TH CMS_sign 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_sign 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_sign_receipt.3.orig ++++ secure/lib/libcrypto/man/CMS_sign_receipt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_sign_receipt 3" +-.TH CMS_sign_receipt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_sign_receipt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_uncompress.3.orig ++++ secure/lib/libcrypto/man/CMS_uncompress.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_uncompress 3" +-.TH CMS_uncompress 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_uncompress 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_verify.3.orig ++++ secure/lib/libcrypto/man/CMS_verify.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_verify 3" +-.TH CMS_verify 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_verify 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CMS_verify_receipt.3.orig ++++ secure/lib/libcrypto/man/CMS_verify_receipt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS_verify_receipt 3" +-.TH CMS_verify_receipt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS_verify_receipt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CONF_modules_free.3.orig ++++ secure/lib/libcrypto/man/CONF_modules_free.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CONF_modules_free 3" +-.TH CONF_modules_free 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CONF_modules_free 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CONF_modules_load_file.3.orig ++++ secure/lib/libcrypto/man/CONF_modules_load_file.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CONF_modules_load_file 3" +-.TH CONF_modules_load_file 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CONF_modules_load_file 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/CRYPTO_set_ex_data.3.orig ++++ secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CRYPTO_set_ex_data 3" +-.TH CRYPTO_set_ex_data 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CRYPTO_set_ex_data 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DH_generate_key.3.orig ++++ secure/lib/libcrypto/man/DH_generate_key.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DH_generate_key 3" +-.TH DH_generate_key 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DH_generate_key 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DH_generate_parameters.3.orig ++++ secure/lib/libcrypto/man/DH_generate_parameters.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DH_generate_parameters 3" +-.TH DH_generate_parameters 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DH_generate_parameters 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DH_get_ex_new_index.3.orig ++++ secure/lib/libcrypto/man/DH_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DH_get_ex_new_index 3" +-.TH DH_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DH_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DH_new.3.orig ++++ secure/lib/libcrypto/man/DH_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DH_new 3" +-.TH DH_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DH_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DH_set_method.3.orig ++++ secure/lib/libcrypto/man/DH_set_method.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DH_set_method 3" +-.TH DH_set_method 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DH_set_method 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DH_size.3.orig ++++ secure/lib/libcrypto/man/DH_size.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DH_size 3" +-.TH DH_size 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DH_size 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_SIG_new.3.orig ++++ secure/lib/libcrypto/man/DSA_SIG_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_SIG_new 3" +-.TH DSA_SIG_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_SIG_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_do_sign.3.orig ++++ secure/lib/libcrypto/man/DSA_do_sign.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_do_sign 3" +-.TH DSA_do_sign 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_do_sign 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_dup_DH.3.orig ++++ secure/lib/libcrypto/man/DSA_dup_DH.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_dup_DH 3" +-.TH DSA_dup_DH 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_dup_DH 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_generate_key.3.orig ++++ secure/lib/libcrypto/man/DSA_generate_key.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_generate_key 3" +-.TH DSA_generate_key 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_generate_key 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_generate_parameters.3.orig ++++ secure/lib/libcrypto/man/DSA_generate_parameters.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_generate_parameters 3" +-.TH DSA_generate_parameters 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_generate_parameters 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_get_ex_new_index.3.orig ++++ secure/lib/libcrypto/man/DSA_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_get_ex_new_index 3" +-.TH DSA_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_new.3.orig ++++ secure/lib/libcrypto/man/DSA_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_new 3" +-.TH DSA_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_set_method.3.orig ++++ secure/lib/libcrypto/man/DSA_set_method.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_set_method 3" +-.TH DSA_set_method 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_set_method 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_sign.3.orig ++++ secure/lib/libcrypto/man/DSA_sign.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_sign 3" +-.TH DSA_sign 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_sign 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/DSA_size.3.orig ++++ secure/lib/libcrypto/man/DSA_size.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA_size 3" +-.TH DSA_size 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA_size 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EC_GFp_simple_method.3.orig ++++ secure/lib/libcrypto/man/EC_GFp_simple_method.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC_GFp_simple_method 3" +-.TH EC_GFp_simple_method 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC_GFp_simple_method 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EC_GROUP_copy.3.orig ++++ secure/lib/libcrypto/man/EC_GROUP_copy.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC_GROUP_copy 3" +-.TH EC_GROUP_copy 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC_GROUP_copy 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EC_GROUP_new.3.orig ++++ secure/lib/libcrypto/man/EC_GROUP_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC_GROUP_new 3" +-.TH EC_GROUP_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC_GROUP_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EC_KEY_new.3.orig ++++ secure/lib/libcrypto/man/EC_KEY_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC_KEY_new 3" +-.TH EC_KEY_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC_KEY_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EC_POINT_add.3.orig ++++ secure/lib/libcrypto/man/EC_POINT_add.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC_POINT_add 3" +-.TH EC_POINT_add 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC_POINT_add 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EC_POINT_new.3.orig ++++ secure/lib/libcrypto/man/EC_POINT_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC_POINT_new 3" +-.TH EC_POINT_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC_POINT_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_GET_LIB.3.orig ++++ secure/lib/libcrypto/man/ERR_GET_LIB.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_GET_LIB 3" +-.TH ERR_GET_LIB 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_GET_LIB 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_clear_error.3.orig ++++ secure/lib/libcrypto/man/ERR_clear_error.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_clear_error 3" +-.TH ERR_clear_error 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_clear_error 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_error_string.3.orig ++++ secure/lib/libcrypto/man/ERR_error_string.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_error_string 3" +-.TH ERR_error_string 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_error_string 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_get_error.3.orig ++++ secure/lib/libcrypto/man/ERR_get_error.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_get_error 3" +-.TH ERR_get_error 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_get_error 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_load_crypto_strings.3.orig ++++ secure/lib/libcrypto/man/ERR_load_crypto_strings.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_load_crypto_strings 3" +-.TH ERR_load_crypto_strings 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_load_crypto_strings 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_load_strings.3.orig ++++ secure/lib/libcrypto/man/ERR_load_strings.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_load_strings 3" +-.TH ERR_load_strings 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_load_strings 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_print_errors.3.orig ++++ secure/lib/libcrypto/man/ERR_print_errors.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_print_errors 3" +-.TH ERR_print_errors 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_print_errors 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_put_error.3.orig ++++ secure/lib/libcrypto/man/ERR_put_error.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_put_error 3" +-.TH ERR_put_error 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_put_error 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_remove_state.3.orig ++++ secure/lib/libcrypto/man/ERR_remove_state.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_remove_state 3" +-.TH ERR_remove_state 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_remove_state 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ERR_set_mark.3.orig ++++ secure/lib/libcrypto/man/ERR_set_mark.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERR_set_mark 3" +-.TH ERR_set_mark 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERR_set_mark 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_BytesToKey.3.orig ++++ secure/lib/libcrypto/man/EVP_BytesToKey.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_BytesToKey 3" +-.TH EVP_BytesToKey 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_BytesToKey 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_DigestInit.3.orig ++++ secure/lib/libcrypto/man/EVP_DigestInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_DigestInit 3" +-.TH EVP_DigestInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_DigestInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_DigestSignInit.3.orig ++++ secure/lib/libcrypto/man/EVP_DigestSignInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_DigestSignInit 3" +-.TH EVP_DigestSignInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_DigestSignInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_DigestVerifyInit.3.orig ++++ secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_DigestVerifyInit 3" +-.TH EVP_DigestVerifyInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_DigestVerifyInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_EncodeInit.3.orig ++++ secure/lib/libcrypto/man/EVP_EncodeInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_EncodeInit 3" +-.TH EVP_EncodeInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_EncodeInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_EncryptInit.3.orig ++++ secure/lib/libcrypto/man/EVP_EncryptInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_EncryptInit 3" +-.TH EVP_EncryptInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_EncryptInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_OpenInit.3.orig ++++ secure/lib/libcrypto/man/EVP_OpenInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_OpenInit 3" +-.TH EVP_OpenInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_OpenInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_CTX_ctrl 3" +-.TH EVP_PKEY_CTX_ctrl 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_CTX_ctrl 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_CTX_new 3" +-.TH EVP_PKEY_CTX_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_CTX_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_cmp.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_cmp.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_cmp 3" +-.TH EVP_PKEY_cmp 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_cmp 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_decrypt.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_decrypt 3" +-.TH EVP_PKEY_decrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_decrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_derive.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_derive.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_derive 3" +-.TH EVP_PKEY_derive 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_derive 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_encrypt.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_encrypt 3" +-.TH EVP_PKEY_encrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_encrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_get_default_digest 3" +-.TH EVP_PKEY_get_default_digest 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_get_default_digest 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_keygen.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_keygen.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_keygen 3" +-.TH EVP_PKEY_keygen 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_keygen 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_new.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_new 3" +-.TH EVP_PKEY_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_print_private.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_print_private.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_print_private 3" +-.TH EVP_PKEY_print_private 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_print_private 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_set1_RSA 3" +-.TH EVP_PKEY_set1_RSA 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_set1_RSA 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_sign.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_sign.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_sign 3" +-.TH EVP_PKEY_sign 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_sign 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_verify.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_verify.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_verify 3" +-.TH EVP_PKEY_verify 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_verify 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3.orig ++++ secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_PKEY_verify_recover 3" +-.TH EVP_PKEY_verify_recover 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_PKEY_verify_recover 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_SealInit.3.orig ++++ secure/lib/libcrypto/man/EVP_SealInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_SealInit 3" +-.TH EVP_SealInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_SealInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_SignInit.3.orig ++++ secure/lib/libcrypto/man/EVP_SignInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_SignInit 3" +-.TH EVP_SignInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_SignInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/EVP_VerifyInit.3.orig ++++ secure/lib/libcrypto/man/EVP_VerifyInit.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EVP_VerifyInit 3" +-.TH EVP_VerifyInit 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EVP_VerifyInit 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OBJ_nid2obj.3.orig ++++ secure/lib/libcrypto/man/OBJ_nid2obj.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OBJ_nid2obj 3" +-.TH OBJ_nid2obj 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OBJ_nid2obj 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OPENSSL_Applink.3.orig ++++ secure/lib/libcrypto/man/OPENSSL_Applink.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL_Applink 3" +-.TH OPENSSL_Applink 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL_Applink 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3.orig ++++ secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL_VERSION_NUMBER 3" +-.TH OPENSSL_VERSION_NUMBER 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL_VERSION_NUMBER 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OPENSSL_config.3.orig ++++ secure/lib/libcrypto/man/OPENSSL_config.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL_config 3" +-.TH OPENSSL_config 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL_config 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OPENSSL_ia32cap.3.orig ++++ secure/lib/libcrypto/man/OPENSSL_ia32cap.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL_ia32cap 3" +-.TH OPENSSL_ia32cap 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL_ia32cap 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OPENSSL_instrument_bus.3.orig ++++ secure/lib/libcrypto/man/OPENSSL_instrument_bus.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL_instrument_bus 3" +-.TH OPENSSL_instrument_bus 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL_instrument_bus 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3.orig ++++ secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL_load_builtin_modules 3" +-.TH OPENSSL_load_builtin_modules 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL_load_builtin_modules 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3.orig ++++ secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OpenSSL_add_all_algorithms 3" +-.TH OpenSSL_add_all_algorithms 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OpenSSL_add_all_algorithms 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3.orig ++++ secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PEM_write_bio_CMS_stream 3" +-.TH PEM_write_bio_CMS_stream 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PEM_write_bio_CMS_stream 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3.orig ++++ secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PEM_write_bio_PKCS7_stream 3" +-.TH PEM_write_bio_PKCS7_stream 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PEM_write_bio_PKCS7_stream 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS12_create.3.orig ++++ secure/lib/libcrypto/man/PKCS12_create.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS12_create 3" +-.TH PKCS12_create 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS12_create 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS12_parse.3.orig ++++ secure/lib/libcrypto/man/PKCS12_parse.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS12_parse 3" +-.TH PKCS12_parse 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS12_parse 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS7_decrypt.3.orig ++++ secure/lib/libcrypto/man/PKCS7_decrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS7_decrypt 3" +-.TH PKCS7_decrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS7_decrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS7_encrypt.3.orig ++++ secure/lib/libcrypto/man/PKCS7_encrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS7_encrypt 3" +-.TH PKCS7_encrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS7_encrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS7_sign.3.orig ++++ secure/lib/libcrypto/man/PKCS7_sign.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS7_sign 3" +-.TH PKCS7_sign 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS7_sign 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS7_sign_add_signer.3.orig ++++ secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS7_sign_add_signer 3" +-.TH PKCS7_sign_add_signer 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS7_sign_add_signer 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/PKCS7_verify.3.orig ++++ secure/lib/libcrypto/man/PKCS7_verify.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS7_verify 3" +-.TH PKCS7_verify 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS7_verify 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RAND_add.3.orig ++++ secure/lib/libcrypto/man/RAND_add.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND_add 3" +-.TH RAND_add 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND_add 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RAND_bytes.3.orig ++++ secure/lib/libcrypto/man/RAND_bytes.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND_bytes 3" +-.TH RAND_bytes 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND_bytes 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RAND_cleanup.3.orig ++++ secure/lib/libcrypto/man/RAND_cleanup.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND_cleanup 3" +-.TH RAND_cleanup 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND_cleanup 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RAND_egd.3.orig ++++ secure/lib/libcrypto/man/RAND_egd.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND_egd 3" +-.TH RAND_egd 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND_egd 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RAND_load_file.3.orig ++++ secure/lib/libcrypto/man/RAND_load_file.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND_load_file 3" +-.TH RAND_load_file 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND_load_file 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RAND_set_rand_method.3.orig ++++ secure/lib/libcrypto/man/RAND_set_rand_method.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND_set_rand_method 3" +-.TH RAND_set_rand_method 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND_set_rand_method 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_blinding_on.3.orig ++++ secure/lib/libcrypto/man/RSA_blinding_on.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_blinding_on 3" +-.TH RSA_blinding_on 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_blinding_on 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_check_key.3.orig ++++ secure/lib/libcrypto/man/RSA_check_key.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_check_key 3" +-.TH RSA_check_key 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_check_key 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_generate_key.3.orig ++++ secure/lib/libcrypto/man/RSA_generate_key.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_generate_key 3" +-.TH RSA_generate_key 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_generate_key 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_get_ex_new_index.3.orig ++++ secure/lib/libcrypto/man/RSA_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_get_ex_new_index 3" +-.TH RSA_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_new.3.orig ++++ secure/lib/libcrypto/man/RSA_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_new 3" +-.TH RSA_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3.orig ++++ secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_padding_add_PKCS1_type_1 3" +-.TH RSA_padding_add_PKCS1_type_1 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_padding_add_PKCS1_type_1 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_print.3.orig ++++ secure/lib/libcrypto/man/RSA_print.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_print 3" +-.TH RSA_print 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_print 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_private_encrypt.3.orig ++++ secure/lib/libcrypto/man/RSA_private_encrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_private_encrypt 3" +-.TH RSA_private_encrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_private_encrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_public_encrypt.3.orig ++++ secure/lib/libcrypto/man/RSA_public_encrypt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_public_encrypt 3" +-.TH RSA_public_encrypt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_public_encrypt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_set_method.3.orig ++++ secure/lib/libcrypto/man/RSA_set_method.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_set_method 3" +-.TH RSA_set_method 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_set_method 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_sign.3.orig ++++ secure/lib/libcrypto/man/RSA_sign.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_sign 3" +-.TH RSA_sign 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_sign 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3.orig ++++ secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_sign_ASN1_OCTET_STRING 3" +-.TH RSA_sign_ASN1_OCTET_STRING 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_sign_ASN1_OCTET_STRING 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/RSA_size.3.orig ++++ secure/lib/libcrypto/man/RSA_size.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA_size 3" +-.TH RSA_size 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA_size 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/SMIME_read_CMS.3.orig ++++ secure/lib/libcrypto/man/SMIME_read_CMS.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SMIME_read_CMS 3" +-.TH SMIME_read_CMS 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SMIME_read_CMS 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/SMIME_read_PKCS7.3.orig ++++ secure/lib/libcrypto/man/SMIME_read_PKCS7.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SMIME_read_PKCS7 3" +-.TH SMIME_read_PKCS7 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SMIME_read_PKCS7 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/SMIME_write_CMS.3.orig ++++ secure/lib/libcrypto/man/SMIME_write_CMS.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SMIME_write_CMS 3" +-.TH SMIME_write_CMS 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SMIME_write_CMS 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/SMIME_write_PKCS7.3.orig ++++ secure/lib/libcrypto/man/SMIME_write_PKCS7.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SMIME_write_PKCS7 3" +-.TH SMIME_write_PKCS7 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SMIME_write_PKCS7 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3.orig ++++ secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_NAME_ENTRY_get_object 3" +-.TH X509_NAME_ENTRY_get_object 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_NAME_ENTRY_get_object 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3.orig ++++ secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_NAME_add_entry_by_txt 3" +-.TH X509_NAME_add_entry_by_txt 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_NAME_add_entry_by_txt 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3.orig ++++ secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_NAME_get_index_by_NID 3" +-.TH X509_NAME_get_index_by_NID 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_NAME_get_index_by_NID 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_NAME_print_ex.3.orig ++++ secure/lib/libcrypto/man/X509_NAME_print_ex.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_NAME_print_ex 3" +-.TH X509_NAME_print_ex 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_NAME_print_ex 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3.orig ++++ secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_STORE_CTX_get_error 3" +-.TH X509_STORE_CTX_get_error 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_STORE_CTX_get_error 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3.orig ++++ secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_STORE_CTX_get_ex_new_index 3" +-.TH X509_STORE_CTX_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_STORE_CTX_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_STORE_CTX_new.3.orig ++++ secure/lib/libcrypto/man/X509_STORE_CTX_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_STORE_CTX_new 3" +-.TH X509_STORE_CTX_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_STORE_CTX_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3.orig ++++ secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_STORE_CTX_set_verify_cb 3" +-.TH X509_STORE_CTX_set_verify_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_STORE_CTX_set_verify_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3.orig ++++ secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_STORE_set_verify_cb_func 3" +-.TH X509_STORE_set_verify_cb_func 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_STORE_set_verify_cb_func 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3.orig ++++ secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_VERIFY_PARAM_set_flags 3" +-.TH X509_VERIFY_PARAM_set_flags 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_VERIFY_PARAM_set_flags 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_check_host.3.orig ++++ secure/lib/libcrypto/man/X509_check_host.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_check_host 3" +-.TH X509_check_host 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_check_host 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_new.3.orig ++++ secure/lib/libcrypto/man/X509_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_new 3" +-.TH X509_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/X509_verify_cert.3.orig ++++ secure/lib/libcrypto/man/X509_verify_cert.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509_verify_cert 3" +-.TH X509_verify_cert 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509_verify_cert 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/bio.3.orig ++++ secure/lib/libcrypto/man/bio.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "bio 3" +-.TH bio 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH bio 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/blowfish.3.orig ++++ secure/lib/libcrypto/man/blowfish.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "blowfish 3" +-.TH blowfish 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH blowfish 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/bn.3.orig ++++ secure/lib/libcrypto/man/bn.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "bn 3" +-.TH bn 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH bn 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/bn_internal.3.orig ++++ secure/lib/libcrypto/man/bn_internal.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "bn_internal 3" +-.TH bn_internal 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH bn_internal 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/buffer.3.orig ++++ secure/lib/libcrypto/man/buffer.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "buffer 3" +-.TH buffer 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH buffer 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/crypto.3.orig ++++ secure/lib/libcrypto/man/crypto.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "crypto 3" +-.TH crypto 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH crypto 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3.orig ++++ secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_ASN1_OBJECT 3" +-.TH d2i_ASN1_OBJECT 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_ASN1_OBJECT 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3.orig ++++ secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_CMS_ContentInfo 3" +-.TH d2i_CMS_ContentInfo 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_CMS_ContentInfo 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_DHparams.3.orig ++++ secure/lib/libcrypto/man/d2i_DHparams.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_DHparams 3" +-.TH d2i_DHparams 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_DHparams 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_DSAPublicKey.3.orig ++++ secure/lib/libcrypto/man/d2i_DSAPublicKey.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_DSAPublicKey 3" +-.TH d2i_DSAPublicKey 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_DSAPublicKey 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_ECPKParameters.3.orig ++++ secure/lib/libcrypto/man/d2i_ECPKParameters.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_ECPKParameters 3" +-.TH d2i_ECPKParameters 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_ECPKParameters 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_ECPrivateKey.3.orig ++++ secure/lib/libcrypto/man/d2i_ECPrivateKey.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_ECPrivateKey 3" +-.TH d2i_ECPrivateKey 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_ECPrivateKey 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3.orig ++++ secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_PKCS8PrivateKey 3" +-.TH d2i_PKCS8PrivateKey 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_PKCS8PrivateKey 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_PrivateKey.3.orig ++++ secure/lib/libcrypto/man/d2i_PrivateKey.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_PrivateKey 3" +-.TH d2i_PrivateKey 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_PrivateKey 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_RSAPublicKey.3.orig ++++ secure/lib/libcrypto/man/d2i_RSAPublicKey.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_RSAPublicKey 3" +-.TH d2i_RSAPublicKey 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_RSAPublicKey 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_X509.3.orig ++++ secure/lib/libcrypto/man/d2i_X509.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_X509 3" +-.TH d2i_X509 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_X509 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_X509_ALGOR.3.orig ++++ secure/lib/libcrypto/man/d2i_X509_ALGOR.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_X509_ALGOR 3" +-.TH d2i_X509_ALGOR 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_X509_ALGOR 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_X509_CRL.3.orig ++++ secure/lib/libcrypto/man/d2i_X509_CRL.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_X509_CRL 3" +-.TH d2i_X509_CRL 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_X509_CRL 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_X509_NAME.3.orig ++++ secure/lib/libcrypto/man/d2i_X509_NAME.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_X509_NAME 3" +-.TH d2i_X509_NAME 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_X509_NAME 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_X509_REQ.3.orig ++++ secure/lib/libcrypto/man/d2i_X509_REQ.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_X509_REQ 3" +-.TH d2i_X509_REQ 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_X509_REQ 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/d2i_X509_SIG.3.orig ++++ secure/lib/libcrypto/man/d2i_X509_SIG.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_X509_SIG 3" +-.TH d2i_X509_SIG 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_X509_SIG 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/des.3.orig ++++ secure/lib/libcrypto/man/des.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "des 3" +-.TH des 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH des 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/dh.3.orig ++++ secure/lib/libcrypto/man/dh.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "dh 3" +-.TH dh 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH dh 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/dsa.3.orig ++++ secure/lib/libcrypto/man/dsa.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "dsa 3" +-.TH dsa 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH dsa 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ec.3.orig ++++ secure/lib/libcrypto/man/ec.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ec 3" +-.TH ec 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ec 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ecdsa.3.orig ++++ secure/lib/libcrypto/man/ecdsa.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ecdsa 3" +-.TH ecdsa 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ecdsa 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/engine.3.orig ++++ secure/lib/libcrypto/man/engine.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "engine 3" +-.TH engine 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH engine 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/err.3.orig ++++ secure/lib/libcrypto/man/err.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "err 3" +-.TH err 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH err 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/evp.3.orig ++++ secure/lib/libcrypto/man/evp.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "evp 3" +-.TH evp 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH evp 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/hmac.3.orig ++++ secure/lib/libcrypto/man/hmac.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "hmac 3" +-.TH hmac 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH hmac 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/i2d_CMS_bio_stream.3.orig ++++ secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "i2d_CMS_bio_stream 3" +-.TH i2d_CMS_bio_stream 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH i2d_CMS_bio_stream 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3.orig ++++ secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "i2d_PKCS7_bio_stream 3" +-.TH i2d_PKCS7_bio_stream 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH i2d_PKCS7_bio_stream 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/lh_stats.3.orig ++++ secure/lib/libcrypto/man/lh_stats.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "lh_stats 3" +-.TH lh_stats 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH lh_stats 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/lhash.3.orig ++++ secure/lib/libcrypto/man/lhash.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "lhash 3" +-.TH lhash 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH lhash 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/md5.3.orig ++++ secure/lib/libcrypto/man/md5.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "md5 3" +-.TH md5 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH md5 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/mdc2.3.orig ++++ secure/lib/libcrypto/man/mdc2.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "mdc2 3" +-.TH mdc2 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH mdc2 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/pem.3.orig ++++ secure/lib/libcrypto/man/pem.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "pem 3" +-.TH pem 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH pem 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/rand.3.orig ++++ secure/lib/libcrypto/man/rand.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "rand 3" +-.TH rand 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH rand 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/rc4.3.orig ++++ secure/lib/libcrypto/man/rc4.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "rc4 3" +-.TH rc4 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH rc4 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ripemd.3.orig ++++ secure/lib/libcrypto/man/ripemd.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ripemd 3" +-.TH ripemd 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ripemd 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/rsa.3.orig ++++ secure/lib/libcrypto/man/rsa.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "rsa 3" +-.TH rsa 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH rsa 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/sha.3.orig ++++ secure/lib/libcrypto/man/sha.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "sha 3" +-.TH sha 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH sha 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/threads.3.orig ++++ secure/lib/libcrypto/man/threads.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "threads 3" +-.TH threads 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH threads 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ui.3.orig ++++ secure/lib/libcrypto/man/ui.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ui 3" +-.TH ui 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ui 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/ui_compat.3.orig ++++ secure/lib/libcrypto/man/ui_compat.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ui_compat 3" +-.TH ui_compat 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ui_compat 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/man/x509.3.orig ++++ secure/lib/libcrypto/man/x509.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "x509 3" +-.TH x509 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH x509 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libcrypto/Makefile.inc.orig ++++ secure/lib/libcrypto/Makefile.inc +@@ -3,8 +3,8 @@ + .include + + # OpenSSL version used for manual page generation +-OPENSSL_VER= 1.0.2i +-OPENSSL_DATE= 2016-09-22 ++OPENSSL_VER= 1.0.2j ++OPENSSL_DATE= 2016-09-26 + + LCRYPTO_SRC= ${.CURDIR}/../../../crypto/openssl + LCRYPTO_DOC= ${LCRYPTO_SRC}/doc +--- secure/lib/libssl/man/SSL_CIPHER_get_name.3.orig ++++ secure/lib/libssl/man/SSL_CIPHER_get_name.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CIPHER_get_name 3" +-.TH SSL_CIPHER_get_name 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CIPHER_get_name 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_COMP_add_compression_method.3.orig ++++ secure/lib/libssl/man/SSL_COMP_add_compression_method.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_COMP_add_compression_method 3" +-.TH SSL_COMP_add_compression_method 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_COMP_add_compression_method 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CONF_CTX_new.3.orig ++++ secure/lib/libssl/man/SSL_CONF_CTX_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CONF_CTX_new 3" +-.TH SSL_CONF_CTX_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CONF_CTX_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CONF_CTX_set1_prefix.3.orig ++++ secure/lib/libssl/man/SSL_CONF_CTX_set1_prefix.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CONF_CTX_set1_prefix 3" +-.TH SSL_CONF_CTX_set1_prefix 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CONF_CTX_set1_prefix 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CONF_CTX_set_flags.3.orig ++++ secure/lib/libssl/man/SSL_CONF_CTX_set_flags.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CONF_CTX_set_flags 3" +-.TH SSL_CONF_CTX_set_flags 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CONF_CTX_set_flags 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CONF_CTX_set_ssl_ctx.3.orig ++++ secure/lib/libssl/man/SSL_CONF_CTX_set_ssl_ctx.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CONF_CTX_set_ssl_ctx 3" +-.TH SSL_CONF_CTX_set_ssl_ctx 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CONF_CTX_set_ssl_ctx 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CONF_cmd.3.orig ++++ secure/lib/libssl/man/SSL_CONF_cmd.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CONF_cmd 3" +-.TH SSL_CONF_cmd 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CONF_cmd 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CONF_cmd_argv.3.orig ++++ secure/lib/libssl/man/SSL_CONF_cmd_argv.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CONF_cmd_argv 3" +-.TH SSL_CONF_cmd_argv 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CONF_cmd_argv 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_add1_chain_cert.3.orig ++++ secure/lib/libssl/man/SSL_CTX_add1_chain_cert.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_add1_chain_cert 3" +-.TH SSL_CTX_add1_chain_cert 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_add1_chain_cert 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3.orig ++++ secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_add_extra_chain_cert 3" +-.TH SSL_CTX_add_extra_chain_cert 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_add_extra_chain_cert 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_add_session.3.orig ++++ secure/lib/libssl/man/SSL_CTX_add_session.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_add_session 3" +-.TH SSL_CTX_add_session 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_add_session 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_ctrl.3.orig ++++ secure/lib/libssl/man/SSL_CTX_ctrl.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_ctrl 3" +-.TH SSL_CTX_ctrl 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_ctrl 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_flush_sessions.3.orig ++++ secure/lib/libssl/man/SSL_CTX_flush_sessions.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_flush_sessions 3" +-.TH SSL_CTX_flush_sessions 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_flush_sessions 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_free.3.orig ++++ secure/lib/libssl/man/SSL_CTX_free.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_free 3" +-.TH SSL_CTX_free 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_free 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_get0_param.3.orig ++++ secure/lib/libssl/man/SSL_CTX_get0_param.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_get0_param 3" +-.TH SSL_CTX_get0_param 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_get0_param 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3.orig ++++ secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_get_ex_new_index 3" +-.TH SSL_CTX_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_get_verify_mode.3.orig ++++ secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_get_verify_mode 3" +-.TH SSL_CTX_get_verify_mode 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_get_verify_mode 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_load_verify_locations.3.orig ++++ secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_load_verify_locations 3" +-.TH SSL_CTX_load_verify_locations 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_load_verify_locations 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_new.3.orig ++++ secure/lib/libssl/man/SSL_CTX_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_new 3" +-.TH SSL_CTX_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_sess_number.3.orig ++++ secure/lib/libssl/man/SSL_CTX_sess_number.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_sess_number 3" +-.TH SSL_CTX_sess_number 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_sess_number 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3.orig ++++ secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_sess_set_cache_size 3" +-.TH SSL_CTX_sess_set_cache_size 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_sess_set_cache_size 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_sess_set_get_cb 3" +-.TH SSL_CTX_sess_set_get_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_sess_set_get_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_sessions.3.orig ++++ secure/lib/libssl/man/SSL_CTX_sessions.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_sessions 3" +-.TH SSL_CTX_sessions 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_sessions 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set1_curves.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set1_curves.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set1_curves 3" +-.TH SSL_CTX_set1_curves 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set1_curves 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set1_verify_cert_store.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set1_verify_cert_store.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set1_verify_cert_store 3" +-.TH SSL_CTX_set1_verify_cert_store 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set1_verify_cert_store 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_alpn_select_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_alpn_select_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_alpn_select_cb 3" +-.TH SSL_CTX_set_alpn_select_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_alpn_select_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_cert_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_cert_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_cert_cb 3" +-.TH SSL_CTX_set_cert_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_cert_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_cert_store.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_cert_store.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_cert_store 3" +-.TH SSL_CTX_set_cert_store 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_cert_store 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_cert_verify_callback 3" +-.TH SSL_CTX_set_cert_verify_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_cert_verify_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_cipher_list.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_cipher_list 3" +-.TH SSL_CTX_set_cipher_list 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_cipher_list 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_client_CA_list 3" +-.TH SSL_CTX_set_client_CA_list 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_client_CA_list 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_client_cert_cb 3" +-.TH SSL_CTX_set_client_cert_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_client_cert_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_custom_cli_ext.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_custom_cli_ext.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_custom_cli_ext 3" +-.TH SSL_CTX_set_custom_cli_ext 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_custom_cli_ext 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_default_passwd_cb 3" +-.TH SSL_CTX_set_default_passwd_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_default_passwd_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_generate_session_id 3" +-.TH SSL_CTX_set_generate_session_id 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_generate_session_id 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_info_callback.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_info_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_info_callback 3" +-.TH SSL_CTX_set_info_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_info_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_max_cert_list 3" +-.TH SSL_CTX_set_max_cert_list 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_max_cert_list 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_mode.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_mode.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_mode 3" +-.TH SSL_CTX_set_mode 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_mode 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_msg_callback.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_msg_callback 3" +-.TH SSL_CTX_set_msg_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_msg_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_options.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_options.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_options 3" +-.TH SSL_CTX_set_options 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_options 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_psk_client_callback 3" +-.TH SSL_CTX_set_psk_client_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_psk_client_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_quiet_shutdown 3" +-.TH SSL_CTX_set_quiet_shutdown 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_quiet_shutdown 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_read_ahead.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_read_ahead.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_read_ahead 3" +-.TH SSL_CTX_set_read_ahead 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_read_ahead 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_session_cache_mode 3" +-.TH SSL_CTX_set_session_cache_mode 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_session_cache_mode 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_session_id_context.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_session_id_context 3" +-.TH SSL_CTX_set_session_id_context 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_session_id_context 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_ssl_version.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_ssl_version 3" +-.TH SSL_CTX_set_ssl_version 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_ssl_version 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_timeout.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_timeout.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_timeout 3" +-.TH SSL_CTX_set_timeout 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_timeout 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_tlsext_status_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_tlsext_status_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_tlsext_status_cb 3" +-.TH SSL_CTX_set_tlsext_status_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_tlsext_status_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_tlsext_ticket_key_cb 3" +-.TH SSL_CTX_set_tlsext_ticket_key_cb 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_tlsext_ticket_key_cb 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_tmp_dh_callback 3" +-.TH SSL_CTX_set_tmp_dh_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_tmp_dh_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_tmp_rsa_callback 3" +-.TH SSL_CTX_set_tmp_rsa_callback 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_tmp_rsa_callback 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_set_verify.3.orig ++++ secure/lib/libssl/man/SSL_CTX_set_verify.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_set_verify 3" +-.TH SSL_CTX_set_verify 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_set_verify 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_use_certificate.3.orig ++++ secure/lib/libssl/man/SSL_CTX_use_certificate.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_use_certificate 3" +-.TH SSL_CTX_use_certificate 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_use_certificate 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3.orig ++++ secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_use_psk_identity_hint 3" +-.TH SSL_CTX_use_psk_identity_hint 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_use_psk_identity_hint 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_CTX_use_serverinfo.3.orig ++++ secure/lib/libssl/man/SSL_CTX_use_serverinfo.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_CTX_use_serverinfo 3" +-.TH SSL_CTX_use_serverinfo 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_CTX_use_serverinfo 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_SESSION_free.3.orig ++++ secure/lib/libssl/man/SSL_SESSION_free.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_SESSION_free 3" +-.TH SSL_SESSION_free 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_SESSION_free 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3.orig ++++ secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_SESSION_get_ex_new_index 3" +-.TH SSL_SESSION_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_SESSION_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_SESSION_get_time.3.orig ++++ secure/lib/libssl/man/SSL_SESSION_get_time.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_SESSION_get_time 3" +-.TH SSL_SESSION_get_time 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_SESSION_get_time 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_accept.3.orig ++++ secure/lib/libssl/man/SSL_accept.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_accept 3" +-.TH SSL_accept 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_accept 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_alert_type_string.3.orig ++++ secure/lib/libssl/man/SSL_alert_type_string.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_alert_type_string 3" +-.TH SSL_alert_type_string 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_alert_type_string 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_check_chain.3.orig ++++ secure/lib/libssl/man/SSL_check_chain.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_check_chain 3" +-.TH SSL_check_chain 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_check_chain 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_clear.3.orig ++++ secure/lib/libssl/man/SSL_clear.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_clear 3" +-.TH SSL_clear 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_clear 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_connect.3.orig ++++ secure/lib/libssl/man/SSL_connect.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_connect 3" +-.TH SSL_connect 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_connect 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_do_handshake.3.orig ++++ secure/lib/libssl/man/SSL_do_handshake.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_do_handshake 3" +-.TH SSL_do_handshake 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_do_handshake 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_free.3.orig ++++ secure/lib/libssl/man/SSL_free.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_free 3" +-.TH SSL_free 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_free 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_SSL_CTX.3.orig ++++ secure/lib/libssl/man/SSL_get_SSL_CTX.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_SSL_CTX 3" +-.TH SSL_get_SSL_CTX 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_SSL_CTX 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_ciphers.3.orig ++++ secure/lib/libssl/man/SSL_get_ciphers.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_ciphers 3" +-.TH SSL_get_ciphers 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_ciphers 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_client_CA_list.3.orig ++++ secure/lib/libssl/man/SSL_get_client_CA_list.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_client_CA_list 3" +-.TH SSL_get_client_CA_list 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_client_CA_list 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_current_cipher.3.orig ++++ secure/lib/libssl/man/SSL_get_current_cipher.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_current_cipher 3" +-.TH SSL_get_current_cipher 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_current_cipher 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_default_timeout.3.orig ++++ secure/lib/libssl/man/SSL_get_default_timeout.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_default_timeout 3" +-.TH SSL_get_default_timeout 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_default_timeout 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_error.3.orig ++++ secure/lib/libssl/man/SSL_get_error.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_error 3" +-.TH SSL_get_error 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_error 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3.orig ++++ secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_ex_data_X509_STORE_CTX_idx 3" +-.TH SSL_get_ex_data_X509_STORE_CTX_idx 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_ex_data_X509_STORE_CTX_idx 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_ex_new_index.3.orig ++++ secure/lib/libssl/man/SSL_get_ex_new_index.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_ex_new_index 3" +-.TH SSL_get_ex_new_index 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_ex_new_index 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_fd.3.orig ++++ secure/lib/libssl/man/SSL_get_fd.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_fd 3" +-.TH SSL_get_fd 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_fd 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_peer_cert_chain.3.orig ++++ secure/lib/libssl/man/SSL_get_peer_cert_chain.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_peer_cert_chain 3" +-.TH SSL_get_peer_cert_chain 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_peer_cert_chain 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_peer_certificate.3.orig ++++ secure/lib/libssl/man/SSL_get_peer_certificate.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_peer_certificate 3" +-.TH SSL_get_peer_certificate 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_peer_certificate 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_psk_identity.3.orig ++++ secure/lib/libssl/man/SSL_get_psk_identity.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_psk_identity 3" +-.TH SSL_get_psk_identity 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_psk_identity 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_rbio.3.orig ++++ secure/lib/libssl/man/SSL_get_rbio.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_rbio 3" +-.TH SSL_get_rbio 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_rbio 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_session.3.orig ++++ secure/lib/libssl/man/SSL_get_session.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_session 3" +-.TH SSL_get_session 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_session 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_verify_result.3.orig ++++ secure/lib/libssl/man/SSL_get_verify_result.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_verify_result 3" +-.TH SSL_get_verify_result 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_verify_result 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_get_version.3.orig ++++ secure/lib/libssl/man/SSL_get_version.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_get_version 3" +-.TH SSL_get_version 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_get_version 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_library_init.3.orig ++++ secure/lib/libssl/man/SSL_library_init.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_library_init 3" +-.TH SSL_library_init 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_library_init 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_load_client_CA_file.3.orig ++++ secure/lib/libssl/man/SSL_load_client_CA_file.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_load_client_CA_file 3" +-.TH SSL_load_client_CA_file 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_load_client_CA_file 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_new.3.orig ++++ secure/lib/libssl/man/SSL_new.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_new 3" +-.TH SSL_new 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_new 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_pending.3.orig ++++ secure/lib/libssl/man/SSL_pending.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_pending 3" +-.TH SSL_pending 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_pending 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_read.3.orig ++++ secure/lib/libssl/man/SSL_read.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_read 3" +-.TH SSL_read 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_read 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_rstate_string.3.orig ++++ secure/lib/libssl/man/SSL_rstate_string.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_rstate_string 3" +-.TH SSL_rstate_string 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_rstate_string 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_session_reused.3.orig ++++ secure/lib/libssl/man/SSL_session_reused.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_session_reused 3" +-.TH SSL_session_reused 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_session_reused 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_set_bio.3.orig ++++ secure/lib/libssl/man/SSL_set_bio.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_set_bio 3" +-.TH SSL_set_bio 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_set_bio 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_set_connect_state.3.orig ++++ secure/lib/libssl/man/SSL_set_connect_state.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_set_connect_state 3" +-.TH SSL_set_connect_state 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_set_connect_state 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_set_fd.3.orig ++++ secure/lib/libssl/man/SSL_set_fd.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_set_fd 3" +-.TH SSL_set_fd 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_set_fd 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_set_session.3.orig ++++ secure/lib/libssl/man/SSL_set_session.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_set_session 3" +-.TH SSL_set_session 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_set_session 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_set_shutdown.3.orig ++++ secure/lib/libssl/man/SSL_set_shutdown.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_set_shutdown 3" +-.TH SSL_set_shutdown 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_set_shutdown 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_set_verify_result.3.orig ++++ secure/lib/libssl/man/SSL_set_verify_result.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_set_verify_result 3" +-.TH SSL_set_verify_result 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_set_verify_result 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_shutdown.3.orig ++++ secure/lib/libssl/man/SSL_shutdown.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_shutdown 3" +-.TH SSL_shutdown 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_shutdown 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_state_string.3.orig ++++ secure/lib/libssl/man/SSL_state_string.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_state_string 3" +-.TH SSL_state_string 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_state_string 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_want.3.orig ++++ secure/lib/libssl/man/SSL_want.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_want 3" +-.TH SSL_want 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_want 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/SSL_write.3.orig ++++ secure/lib/libssl/man/SSL_write.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SSL_write 3" +-.TH SSL_write 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SSL_write 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/d2i_SSL_SESSION.3.orig ++++ secure/lib/libssl/man/d2i_SSL_SESSION.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "d2i_SSL_SESSION 3" +-.TH d2i_SSL_SESSION 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH d2i_SSL_SESSION 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/lib/libssl/man/ssl.3.orig ++++ secure/lib/libssl/man/ssl.3 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ssl 3" +-.TH ssl 3 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ssl 3 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/CA.pl.1.orig ++++ secure/usr.bin/openssl/man/CA.pl.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CA.PL 1" +-.TH CA.PL 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CA.PL 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/asn1parse.1.orig ++++ secure/usr.bin/openssl/man/asn1parse.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ASN1PARSE 1" +-.TH ASN1PARSE 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ASN1PARSE 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/c_rehash.1.orig ++++ secure/usr.bin/openssl/man/c_rehash.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "C_REHASH 1" +-.TH C_REHASH 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH C_REHASH 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/ca.1.orig ++++ secure/usr.bin/openssl/man/ca.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CA 1" +-.TH CA 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CA 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/ciphers.1.orig ++++ secure/usr.bin/openssl/man/ciphers.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CIPHERS 1" +-.TH CIPHERS 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CIPHERS 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/cms.1.orig ++++ secure/usr.bin/openssl/man/cms.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CMS 1" +-.TH CMS 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CMS 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/crl.1.orig ++++ secure/usr.bin/openssl/man/crl.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CRL 1" +-.TH CRL 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CRL 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/crl2pkcs7.1.orig ++++ secure/usr.bin/openssl/man/crl2pkcs7.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "CRL2PKCS7 1" +-.TH CRL2PKCS7 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH CRL2PKCS7 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/dgst.1.orig ++++ secure/usr.bin/openssl/man/dgst.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DGST 1" +-.TH DGST 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DGST 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/dhparam.1.orig ++++ secure/usr.bin/openssl/man/dhparam.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DHPARAM 1" +-.TH DHPARAM 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DHPARAM 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/dsa.1.orig ++++ secure/usr.bin/openssl/man/dsa.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSA 1" +-.TH DSA 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSA 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/dsaparam.1.orig ++++ secure/usr.bin/openssl/man/dsaparam.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "DSAPARAM 1" +-.TH DSAPARAM 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH DSAPARAM 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/ec.1.orig ++++ secure/usr.bin/openssl/man/ec.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "EC 1" +-.TH EC 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH EC 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/ecparam.1.orig ++++ secure/usr.bin/openssl/man/ecparam.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ECPARAM 1" +-.TH ECPARAM 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ECPARAM 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/enc.1.orig ++++ secure/usr.bin/openssl/man/enc.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ENC 1" +-.TH ENC 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ENC 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/errstr.1.orig ++++ secure/usr.bin/openssl/man/errstr.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "ERRSTR 1" +-.TH ERRSTR 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH ERRSTR 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/gendsa.1.orig ++++ secure/usr.bin/openssl/man/gendsa.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "GENDSA 1" +-.TH GENDSA 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH GENDSA 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/genpkey.1.orig ++++ secure/usr.bin/openssl/man/genpkey.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "GENPKEY 1" +-.TH GENPKEY 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH GENPKEY 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/genrsa.1.orig ++++ secure/usr.bin/openssl/man/genrsa.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "GENRSA 1" +-.TH GENRSA 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH GENRSA 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/nseq.1.orig ++++ secure/usr.bin/openssl/man/nseq.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "NSEQ 1" +-.TH NSEQ 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH NSEQ 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/ocsp.1.orig ++++ secure/usr.bin/openssl/man/ocsp.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OCSP 1" +-.TH OCSP 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OCSP 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/openssl.1.orig ++++ secure/usr.bin/openssl/man/openssl.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "OPENSSL 1" +-.TH OPENSSL 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH OPENSSL 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/passwd.1.orig ++++ secure/usr.bin/openssl/man/passwd.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PASSWD 1" +-.TH PASSWD 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PASSWD 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/pkcs12.1.orig ++++ secure/usr.bin/openssl/man/pkcs12.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS12 1" +-.TH PKCS12 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS12 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/pkcs7.1.orig ++++ secure/usr.bin/openssl/man/pkcs7.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS7 1" +-.TH PKCS7 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS7 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/pkcs8.1.orig ++++ secure/usr.bin/openssl/man/pkcs8.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKCS8 1" +-.TH PKCS8 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKCS8 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/pkey.1.orig ++++ secure/usr.bin/openssl/man/pkey.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKEY 1" +-.TH PKEY 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKEY 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/pkeyparam.1.orig ++++ secure/usr.bin/openssl/man/pkeyparam.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKEYPARAM 1" +-.TH PKEYPARAM 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKEYPARAM 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/pkeyutl.1.orig ++++ secure/usr.bin/openssl/man/pkeyutl.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "PKEYUTL 1" +-.TH PKEYUTL 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH PKEYUTL 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/rand.1.orig ++++ secure/usr.bin/openssl/man/rand.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RAND 1" +-.TH RAND 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RAND 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/req.1.orig ++++ secure/usr.bin/openssl/man/req.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "REQ 1" +-.TH REQ 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH REQ 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/rsa.1.orig ++++ secure/usr.bin/openssl/man/rsa.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSA 1" +-.TH RSA 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSA 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/rsautl.1.orig ++++ secure/usr.bin/openssl/man/rsautl.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "RSAUTL 1" +-.TH RSAUTL 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH RSAUTL 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/s_client.1.orig ++++ secure/usr.bin/openssl/man/s_client.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "S_CLIENT 1" +-.TH S_CLIENT 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH S_CLIENT 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/s_server.1.orig ++++ secure/usr.bin/openssl/man/s_server.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "S_SERVER 1" +-.TH S_SERVER 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH S_SERVER 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/s_time.1.orig ++++ secure/usr.bin/openssl/man/s_time.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "S_TIME 1" +-.TH S_TIME 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH S_TIME 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/sess_id.1.orig ++++ secure/usr.bin/openssl/man/sess_id.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SESS_ID 1" +-.TH SESS_ID 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SESS_ID 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/smime.1.orig ++++ secure/usr.bin/openssl/man/smime.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SMIME 1" +-.TH SMIME 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SMIME 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/speed.1.orig ++++ secure/usr.bin/openssl/man/speed.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SPEED 1" +-.TH SPEED 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SPEED 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/spkac.1.orig ++++ secure/usr.bin/openssl/man/spkac.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "SPKAC 1" +-.TH SPKAC 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH SPKAC 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/ts.1.orig ++++ secure/usr.bin/openssl/man/ts.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "TS 1" +-.TH TS 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH TS 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/tsget.1.orig ++++ secure/usr.bin/openssl/man/tsget.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "TSGET 1" +-.TH TSGET 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH TSGET 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/verify.1.orig ++++ secure/usr.bin/openssl/man/verify.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "VERIFY 1" +-.TH VERIFY 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH VERIFY 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/version.1.orig ++++ secure/usr.bin/openssl/man/version.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "VERSION 1" +-.TH VERSION 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH VERSION 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/x509.1.orig ++++ secure/usr.bin/openssl/man/x509.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509 1" +-.TH X509 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- secure/usr.bin/openssl/man/x509v3_config.1.orig ++++ secure/usr.bin/openssl/man/x509v3_config.1 +@@ -133,7 +133,7 @@ + .\" ======================================================================== + .\" + .IX Title "X509V3_CONFIG 1" +-.TH X509V3_CONFIG 1 "2016-09-22" "1.0.2i" "OpenSSL" ++.TH X509V3_CONFIG 1 "2016-09-26" "1.0.2j" "OpenSSL" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l +--- ..orig ++++ . + Merged /head:r306342 Property changes on: head/share/security/patches/SA-16:27/openssl.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:27/openssl.patch.asc =================================================================== --- head/share/security/patches/SA-16:27/openssl.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:27/openssl.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PkAAoJEO1n7NZdz2rnOOwQAOezEOJdnLrlHHKfQhX2MZ2x +GL8VmX3mIzWUBt8nU/aS1ApM/l5Oiiiw0qGmO0PbjDKzEsrnzoudAlOXYA6S42GX +koFAFhGtdza1hfzEUfqCit6yzK+JlSLBFXnezmZzUmM/RipJig6mJGbbrh3avxPL +sAvbe893bQ/5zOu72KdK4CrfpNgeGC4vGvVuTag24rNjRS/X9FTxt1Dg+snvXaec +IZfp/ar8ZAdWGQzmkLbSl0Ac3x5WWh7I9TSs0a+o9fMK36jgor7lMzTLMrkJ8Jh1 +IqrWktNL5BDOyAROHEmdhbQiXNeRljJTGrg9Fkjacmj7PqrjbVNzwqCCqmn1Dr1I +9u3++EOJf4AK6cKZ2dAqhbxoKB+q4N6SDiSnm5Gspr/et6LJqlsEiaf+8evVpvRY +jnhdykgf5dgmwMl39FWM4+4Yy8R0XusmlHhh6fiivaAidUhzExsfokGndzhF6nYc +Dys/hVhi3GGg1QejCNck/yHH8ikVEuUFq2pObpDDObS771QQ/wJ6HtHhXMxEsHjg +aXLLmpPrP1ZHrRkcdS5xFeRDgmlGJe+Yoxsw4aqJPsj/kfjIZzeIyD6yfFYsnZzj +R+x1ZuVbb8OkKvm1fhZojEzWROL6dcT4CYUahqLaxn2G5bzht1HSaehOy7/0EOHR +HQw0gDrKNjf/vCtN4v9a +=5Xq6 +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:27/openssl.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:28/bind.patch =================================================================== --- head/share/security/patches/SA-16:28/bind.patch (nonexistent) +++ head/share/security/patches/SA-16:28/bind.patch (revision 49477) @@ -0,0 +1,87 @@ +--- contrib/bind9/lib/dns/message.c.orig ++++ contrib/bind9/lib/dns/message.c +@@ -1736,7 +1736,7 @@ + if (r.length < DNS_MESSAGE_HEADERLEN) + return (ISC_R_NOSPACE); + +- if (r.length < msg->reserved) ++ if (r.length - DNS_MESSAGE_HEADERLEN < msg->reserved) + return (ISC_R_NOSPACE); + + /* +@@ -1863,8 +1863,29 @@ + + return (ISC_TRUE); + } ++#endif + +-#endif ++static isc_result_t ++renderset(dns_rdataset_t *rdataset, dns_name_t *owner_name, ++ dns_compress_t *cctx, isc_buffer_t *target, ++ unsigned int reserved, unsigned int options, unsigned int *countp) ++{ ++ isc_result_t result; ++ ++ /* ++ * Shrink the space in the buffer by the reserved amount. ++ */ ++ if (target->length - target->used < reserved) ++ return (ISC_R_NOSPACE); ++ ++ target->length -= reserved; ++ result = dns_rdataset_towire(rdataset, owner_name, ++ cctx, target, options, countp); ++ target->length += reserved; ++ ++ return (result); ++} ++ + isc_result_t + dns_message_rendersection(dns_message_t *msg, dns_section_t sectionid, + unsigned int options) +@@ -1907,6 +1928,8 @@ + /* + * Shrink the space in the buffer by the reserved amount. + */ ++ if (msg->buffer->length - msg->buffer->used < msg->reserved) ++ return (ISC_R_NOSPACE); + msg->buffer->length -= msg->reserved; + + total = 0; +@@ -2183,9 +2206,8 @@ + * Render. + */ + count = 0; +- result = dns_rdataset_towire(msg->opt, dns_rootname, +- msg->cctx, msg->buffer, 0, +- &count); ++ result = renderset(msg->opt, dns_rootname, msg->cctx, ++ msg->buffer, msg->reserved, 0, &count); + msg->counts[DNS_SECTION_ADDITIONAL] += count; + if (result != ISC_R_SUCCESS) + return (result); +@@ -2201,9 +2223,8 @@ + if (result != ISC_R_SUCCESS) + return (result); + count = 0; +- result = dns_rdataset_towire(msg->tsig, msg->tsigname, +- msg->cctx, msg->buffer, 0, +- &count); ++ result = renderset(msg->tsig, msg->tsigname, msg->cctx, ++ msg->buffer, msg->reserved, 0, &count); + msg->counts[DNS_SECTION_ADDITIONAL] += count; + if (result != ISC_R_SUCCESS) + return (result); +@@ -2224,9 +2245,8 @@ + * the owner name of a SIG(0) is irrelevant, and will not + * be set in a message being rendered. + */ +- result = dns_rdataset_towire(msg->sig0, dns_rootname, +- msg->cctx, msg->buffer, 0, +- &count); ++ result = renderset(msg->sig0, dns_rootname, msg->cctx, ++ msg->buffer, msg->reserved, 0, &count); + msg->counts[DNS_SECTION_ADDITIONAL] += count; + if (result != ISC_R_SUCCESS) + return (result); Property changes on: head/share/security/patches/SA-16:28/bind.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:28/bind.patch.asc =================================================================== --- head/share/security/patches/SA-16:28/bind.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:28/bind.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PkAAoJEO1n7NZdz2rnQp4QAM0ewaa+/Uf9DtsxfNFBG7B3 +FGwAQsn6147M1+Et1FFtHonjnnzYb+bN+xEHGDLS5R7kLxDgdzWdF/+VlM1iTex9 +gwdJ9PHctHKh++mw6iI4CSZDPHIg+4YmuY6liUDVlQthetOdh8mIHrOO9EBOkQZ9 +yk37YWSFmJEKfLYOOSp8/c7ukf56YW3Z7KWVSjxftx7Ct4WJVVL0nc6YDly0/IoS +3RhGPdT/fkqYVewHolCkp9+oVMiQaOJIqUCpE8oaRMRrRjUHG457RoyEVM0y2SwC +ptjAvimClV0qv6hzXY/D4Y4UV5MCTreJVESkZECNF5UB20jhdPLR2gwC1NQNb0+w +3W1AabWMIv/OyqfFy4ZWIaEKaza8iVQruJZdq/ZPItSiszRqJ9vVReI8rIaEPtRI +ZVhPO4YOozwQE/kQrYQL5MJe2uV+grnmN/1wDCMqUBBi/9/YnRFFpf876Q4lS9xM +D2d4PqelPUJ+C+K4P/750Jiv4K4DXuR1zliwshmofeNKS1/KkqGm7E4jp0JoCSQa +udlSQ4Y5D/84Wcevi3GXXuAK55I0WOfB5XgSMpAFVgKeEKSYDaU93olNOqxikMwC +vV5GX6RgTRri3pjhGoxFvp1EcuihUCmjGMcUJy1lPg8QQpf1KTiQ24acse5CV+nr +YBtiOueAyfcGtkaTWCty +=Daic +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:28/bind.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:29/bspatch.patch =================================================================== --- head/share/security/patches/SA-16:29/bspatch.patch (nonexistent) +++ head/share/security/patches/SA-16:29/bspatch.patch (revision 49477) @@ -0,0 +1,325 @@ +--- usr.bin/bsdiff/bspatch/bspatch.c.orig ++++ usr.bin/bsdiff/bspatch/bspatch.c +@@ -27,56 +27,133 @@ + #include + __FBSDID("$FreeBSD$"); + ++#if defined(__FreeBSD__) ++#include ++#if __FreeBSD_version >= 1001511 ++#include ++#define HAVE_CAPSICUM ++#endif ++#endif ++ + #include +-#include ++#include ++#include ++#include ++#include ++#include ++#include + #include ++#include + #include +-#include + #include +-#include + + #ifndef O_BINARY + #define O_BINARY 0 + #endif ++#define HEADER_SIZE 32 ++ ++static char *newfile; ++static int dirfd = -1; ++ ++static void ++exit_cleanup(void) ++{ ++ ++ if (dirfd != -1 && newfile != NULL) ++ if (unlinkat(dirfd, newfile, 0)) ++ warn("unlinkat"); ++} + + static off_t offtin(u_char *buf) + { + off_t y; + +- y=buf[7]&0x7F; +- y=y*256;y+=buf[6]; +- y=y*256;y+=buf[5]; +- y=y*256;y+=buf[4]; +- y=y*256;y+=buf[3]; +- y=y*256;y+=buf[2]; +- y=y*256;y+=buf[1]; +- y=y*256;y+=buf[0]; ++ y = buf[7] & 0x7F; ++ y = y * 256; y += buf[6]; ++ y = y * 256; y += buf[5]; ++ y = y * 256; y += buf[4]; ++ y = y * 256; y += buf[3]; ++ y = y * 256; y += buf[2]; ++ y = y * 256; y += buf[1]; ++ y = y * 256; y += buf[0]; + +- if(buf[7]&0x80) y=-y; ++ if (buf[7] & 0x80) ++ y = -y; + +- return y; ++ return (y); + } + +-int main(int argc,char * argv[]) ++int main(int argc, char *argv[]) + { +- FILE * f, * cpf, * dpf, * epf; +- BZFILE * cpfbz2, * dpfbz2, * epfbz2; ++ FILE *f, *cpf, *dpf, *epf; ++ BZFILE *cpfbz2, *dpfbz2, *epfbz2; ++ char *directory, *namebuf; + int cbz2err, dbz2err, ebz2err; +- int fd; +- ssize_t oldsize,newsize; +- ssize_t bzctrllen,bzdatalen; +- u_char header[32],buf[8]; ++ int newfd, oldfd; ++ off_t oldsize, newsize; ++ off_t bzctrllen, bzdatalen; ++ u_char header[HEADER_SIZE], buf[8]; + u_char *old, *new; +- off_t oldpos,newpos; ++ off_t oldpos, newpos; + off_t ctrl[3]; +- off_t lenread; +- off_t i; ++ off_t i, lenread, offset; ++#ifdef HAVE_CAPSICUM ++ cap_rights_t rights_dir, rights_ro, rights_wr; ++#endif + + if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile\n",argv[0]); + + /* Open patch file */ + if ((f = fopen(argv[3], "rb")) == NULL) + err(1, "fopen(%s)", argv[3]); ++ /* Open patch file for control block */ ++ if ((cpf = fopen(argv[3], "rb")) == NULL) ++ err(1, "fopen(%s)", argv[3]); ++ /* open patch file for diff block */ ++ if ((dpf = fopen(argv[3], "rb")) == NULL) ++ err(1, "fopen(%s)", argv[3]); ++ /* open patch file for extra block */ ++ if ((epf = fopen(argv[3], "rb")) == NULL) ++ err(1, "fopen(%s)", argv[3]); ++ /* open oldfile */ ++ if ((oldfd = open(argv[1], O_RDONLY | O_BINARY, 0)) < 0) ++ err(1, "open(%s)", argv[1]); ++ /* open directory where we'll write newfile */ ++ if ((namebuf = strdup(argv[2])) == NULL || ++ (directory = dirname(namebuf)) == NULL || ++ (dirfd = open(directory, O_DIRECTORY)) < 0) ++ err(1, "open %s", argv[2]); ++ free(namebuf); ++ if ((newfile = basename(argv[2])) == NULL) ++ err(1, "basename"); ++ /* open newfile */ ++ if ((newfd = openat(dirfd, newfile, ++ O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0666)) < 0) ++ err(1, "open(%s)", argv[2]); ++ atexit(exit_cleanup); ++ ++#ifdef HAVE_CAPSICUM ++ if (cap_enter() < 0) { ++ /* Failed to sandbox, fatal if CAPABILITY_MODE enabled */ ++ if (errno != ENOSYS) ++ err(1, "failed to enter security sandbox"); ++ } else { ++ /* Capsicum Available */ ++ cap_rights_init(&rights_ro, CAP_READ, CAP_FSTAT, CAP_SEEK); ++ cap_rights_init(&rights_wr, CAP_WRITE); ++ cap_rights_init(&rights_dir, CAP_UNLINKAT); ++ ++ if (cap_rights_limit(fileno(f), &rights_ro) < 0 || ++ cap_rights_limit(fileno(cpf), &rights_ro) < 0 || ++ cap_rights_limit(fileno(dpf), &rights_ro) < 0 || ++ cap_rights_limit(fileno(epf), &rights_ro) < 0 || ++ cap_rights_limit(oldfd, &rights_ro) < 0 || ++ cap_rights_limit(newfd, &rights_wr) < 0 || ++ cap_rights_limit(dirfd, &rights_dir) < 0) ++ err(1, "cap_rights_limit() failed, could not restrict" ++ " capabilities"); ++ } ++#endif + + /* + File format: +@@ -93,99 +170,99 @@ + */ + + /* Read header */ +- if (fread(header, 1, 32, f) < 32) { ++ if (fread(header, 1, HEADER_SIZE, f) < HEADER_SIZE) { + if (feof(f)) +- errx(1, "Corrupt patch\n"); ++ errx(1, "Corrupt patch"); + err(1, "fread(%s)", argv[3]); + } + + /* Check for appropriate magic */ + if (memcmp(header, "BSDIFF40", 8) != 0) +- errx(1, "Corrupt patch\n"); ++ errx(1, "Corrupt patch"); + + /* Read lengths from header */ +- bzctrllen=offtin(header+8); +- bzdatalen=offtin(header+16); +- newsize=offtin(header+24); +- if((bzctrllen<0) || (bzdatalen<0) || (newsize<0)) +- errx(1,"Corrupt patch\n"); ++ bzctrllen = offtin(header + 8); ++ bzdatalen = offtin(header + 16); ++ newsize = offtin(header + 24); ++ if (bzctrllen < 0 || bzctrllen > OFF_MAX - HEADER_SIZE || ++ bzdatalen < 0 || bzctrllen + HEADER_SIZE > OFF_MAX - bzdatalen || ++ newsize < 0 || newsize > SSIZE_MAX) ++ errx(1, "Corrupt patch"); + + /* Close patch file and re-open it via libbzip2 at the right places */ + if (fclose(f)) + err(1, "fclose(%s)", argv[3]); +- if ((cpf = fopen(argv[3], "rb")) == NULL) +- err(1, "fopen(%s)", argv[3]); +- if (fseeko(cpf, 32, SEEK_SET)) +- err(1, "fseeko(%s, %lld)", argv[3], +- (long long)32); ++ offset = HEADER_SIZE; ++ if (fseeko(cpf, offset, SEEK_SET)) ++ err(1, "fseeko(%s, %jd)", argv[3], (intmax_t)offset); + if ((cpfbz2 = BZ2_bzReadOpen(&cbz2err, cpf, 0, 0, NULL, 0)) == NULL) + errx(1, "BZ2_bzReadOpen, bz2err = %d", cbz2err); +- if ((dpf = fopen(argv[3], "rb")) == NULL) +- err(1, "fopen(%s)", argv[3]); +- if (fseeko(dpf, 32 + bzctrllen, SEEK_SET)) +- err(1, "fseeko(%s, %lld)", argv[3], +- (long long)(32 + bzctrllen)); ++ offset += bzctrllen; ++ if (fseeko(dpf, offset, SEEK_SET)) ++ err(1, "fseeko(%s, %jd)", argv[3], (intmax_t)offset); + if ((dpfbz2 = BZ2_bzReadOpen(&dbz2err, dpf, 0, 0, NULL, 0)) == NULL) + errx(1, "BZ2_bzReadOpen, bz2err = %d", dbz2err); +- if ((epf = fopen(argv[3], "rb")) == NULL) +- err(1, "fopen(%s)", argv[3]); +- if (fseeko(epf, 32 + bzctrllen + bzdatalen, SEEK_SET)) +- err(1, "fseeko(%s, %lld)", argv[3], +- (long long)(32 + bzctrllen + bzdatalen)); ++ offset += bzdatalen; ++ if (fseeko(epf, offset, SEEK_SET)) ++ err(1, "fseeko(%s, %jd)", argv[3], (intmax_t)offset); + if ((epfbz2 = BZ2_bzReadOpen(&ebz2err, epf, 0, 0, NULL, 0)) == NULL) + errx(1, "BZ2_bzReadOpen, bz2err = %d", ebz2err); + +- if(((fd=open(argv[1],O_RDONLY|O_BINARY,0))<0) || +- ((oldsize=lseek(fd,0,SEEK_END))==-1) || +- ((old=malloc(oldsize+1))==NULL) || +- (lseek(fd,0,SEEK_SET)!=0) || +- (read(fd,old,oldsize)!=oldsize) || +- (close(fd)==-1)) err(1,"%s",argv[1]); +- if((new=malloc(newsize+1))==NULL) err(1,NULL); ++ if ((oldsize = lseek(oldfd, 0, SEEK_END)) == -1 || ++ oldsize > SSIZE_MAX || ++ (old = malloc(oldsize)) == NULL || ++ lseek(oldfd, 0, SEEK_SET) != 0 || ++ read(oldfd, old, oldsize) != oldsize || ++ close(oldfd) == -1) ++ err(1, "%s", argv[1]); ++ if ((new = malloc(newsize)) == NULL) ++ err(1, NULL); + +- oldpos=0;newpos=0; +- while(newpos INT_MAX || ++ ctrl[1] < 0 || ctrl[1] > INT_MAX) ++ errx(1, "Corrupt patch"); + + /* Sanity-check */ +- if(newpos+ctrl[0]>newsize) +- errx(1,"Corrupt patch\n"); ++ if (newpos + ctrl[0] > newsize) ++ errx(1, "Corrupt patch"); + + /* Read diff string */ + lenread = BZ2_bzRead(&dbz2err, dpfbz2, new + newpos, ctrl[0]); + if ((lenread < ctrl[0]) || + ((dbz2err != BZ_OK) && (dbz2err != BZ_STREAM_END))) +- errx(1, "Corrupt patch\n"); ++ errx(1, "Corrupt patch"); + + /* Add old data to diff string */ +- for(i=0;i=0) && (oldpos+i= 0) && (oldpos + i < oldsize)) ++ new[newpos + i] += old[oldpos + i]; + + /* Adjust pointers */ +- newpos+=ctrl[0]; +- oldpos+=ctrl[0]; ++ newpos += ctrl[0]; ++ oldpos += ctrl[0]; + + /* Sanity-check */ +- if(newpos+ctrl[1]>newsize) +- errx(1,"Corrupt patch\n"); ++ if (newpos + ctrl[1] > newsize) ++ errx(1, "Corrupt patch"); + + /* Read extra string */ + lenread = BZ2_bzRead(&ebz2err, epfbz2, new + newpos, ctrl[1]); + if ((lenread < ctrl[1]) || + ((ebz2err != BZ_OK) && (ebz2err != BZ_STREAM_END))) +- errx(1, "Corrupt patch\n"); ++ errx(1, "Corrupt patch"); + + /* Adjust pointers */ + newpos+=ctrl[1]; +@@ -200,12 +277,13 @@ + err(1, "fclose(%s)", argv[3]); + + /* Write the new file */ +- if(((fd=open(argv[2],O_CREAT|O_TRUNC|O_WRONLY|O_BINARY,0666))<0) || +- (write(fd,new,newsize)!=newsize) || (close(fd)==-1)) +- err(1,"%s",argv[2]); ++ if (write(newfd, new, newsize) != newsize || close(newfd) == -1) ++ err(1, "%s", argv[2]); ++ /* Disable atexit cleanup */ ++ newfile = NULL; + + free(new); + free(old); + +- return 0; ++ return (0); + } Property changes on: head/share/security/patches/SA-16:29/bspatch.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:29/bspatch.patch.asc =================================================================== --- head/share/security/patches/SA-16:29/bspatch.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:29/bspatch.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PlAAoJEO1n7NZdz2rnfh4QAIXvMutg0RNWQ0nrxUC2l8D9 +0Ul2EMzk764Cq8qsFbKtecxxrzGf8EF90KxWMJTi+n2OdEvZleRP0ZwZP/6LHKR+ +79p+ZHJ+KAafF1JQ0B7hEBQHMN4VG9tD58xrQYpNaxzRw7bGBWEQignOzGYJf0GA +xF1KEgOcN1YwdfV6IuwHC3qKLpG0LsVItr3Pk8qOxPKKUB2X19rXqyZxy4vI9Rbd +v4E3hdIG/ltjGfd/+hg/d6tajtzoMsaWQVOPYHyR1WsUIf5cRhX4Kxf0s59xKgtK +hxIpGcJ+HpdEDJQJxjjPZmeM1duU9K7LjSfCB2W6Ss/IMwwcPeRUiwDAlbmX3Iui +149kLuKCMMoGqem50f0rUHqT6OaSj9QCz64NatGaCtmj7jpKPWKx0DmtnYcDrwLS +/QnYqqlCYKQDhgxKMwvBIhFh5KNO67tOJ5JU94/x+q8JSluO4TXq/JBOd3x7Gx1J +GKlyRL/NRACq0OFBDIavUBicd2mlV7MvX2GkUUFQ+xoFIr2gtZWjOd8uc5M9VTcs +9hJHg8EV6+0+r+X5kbGD7Ysp/Ane/H/0zsipQOmH792xtUv4+BYY7HGtOU+mHo/n +9ArqhJCgoW4kryKo3N91gdRfpmRz1CU6Ug/OaNtu3+gDZ1DpqVzrt0ZcBq6cWJSP +muRFMZb83H5gn9orwr7w +=plb5 +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:29/bspatch.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:30/portsnap-10.patch =================================================================== --- head/share/security/patches/SA-16:30/portsnap-10.patch (nonexistent) +++ head/share/security/patches/SA-16:30/portsnap-10.patch (revision 49477) @@ -0,0 +1,49 @@ +--- usr.sbin/portsnap/portsnap/portsnap.sh.orig ++++ usr.sbin/portsnap/portsnap/portsnap.sh +@@ -646,7 +646,7 @@ + # Verify a list of files + fetch_snapshot_verify() { + while read F; do +- if [ "`gunzip -c snap/${F} | ${SHA256} -q`" != ${F} ]; then ++ if [ "`gunzip -c < snap/${F}.gz | ${SHA256} -q`" != ${F} ]; then + echo "snapshot corrupt." + return 1 + fi +@@ -681,11 +681,18 @@ + cut -f 2 -d '|' tINDEX.new | fetch_snapshot_verify || return 1 + # Extract the index + rm -f INDEX.new +- gunzip -c snap/`look INDEX tINDEX.new | ++ gunzip -c < snap/`look INDEX tINDEX.new | + cut -f 2 -d '|'`.gz > INDEX.new + fetch_index_sanity || return 1 + # Verify the snapshot contents + cut -f 2 -d '|' INDEX.new | fetch_snapshot_verify || return 1 ++ cut -f 2 -d '|' tINDEX.new INDEX.new | sort -u > files.expected ++ find snap -mindepth 1 | sed -E 's^snap/(.*)\.gz^\1^' | sort > files.snap ++ if ! cmp -s files.expected files.snap; then ++ echo "unexpected files in snapshot." ++ return 1 ++ fi ++ rm files.expected files.snap + echo "done." + + # Move files into their proper locations +@@ -777,7 +784,7 @@ + + # Extract the index + echo -n "Extracting index... " 1>${QUIETREDIR} +- gunzip -c files/`look INDEX tINDEX.new | ++ gunzip -c < files/`look INDEX tINDEX.new | + cut -f 2 -d '|'`.gz > INDEX.new + fetch_index_sanity || return 1 + +@@ -897,7 +904,7 @@ + echo -n "$1 not provided by portsnap server; " + echo "$2 not being generated." + else +- gunzip -c "${WORKDIR}/files/`look $1 ${WORKDIR}/tINDEX | ++ gunzip -c < "${WORKDIR}/files/`look $1 ${WORKDIR}/tINDEX | + cut -f 2 -d '|'`.gz" | + cat - ${LOCALDESC} | + ${MKINDEX} /dev/stdin > ${PORTSDIR}/$2 Property changes on: head/share/security/patches/SA-16:30/portsnap-10.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:30/portsnap-10.patch.asc =================================================================== --- head/share/security/patches/SA-16:30/portsnap-10.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:30/portsnap-10.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PlAAoJEO1n7NZdz2rn9XUP/iaVbNjwpbtZVxtTIlEHFvgH +BK1Pn4DEuXKWfL00kMAUr/fhZSKqb37hT9ZBQzRbrofG5nG0hOpG8LF9br3ZWaR5 +t04Yk9mXM9c1JDXjXuSNAewe4z+ylSdNNxXNO75s/qC2TbOGP2R7GpcIJ+LljsEI +cRgZuau3ce6iJcrbbmlI4BBvOMGor1eteJI4kXIegtsOlHxl+mAQcqxdpxENGwzn +VJMQv7dav0PQ2TaCU8UkBj9jYeToXoTMo/lqalweSrYVqL6Lf7zP312Lxz1YtJY3 +c9GcViHjni8RnBMglGX6LYm9uzQIlA8nxccU3Uc08b6c8uouWLn6QmkQefGa2zqf +YRUnX8fJwy3n8qFjPm3wq48UsJvL8i7O33DyDHo8OerG2OADbz6ts56QRKgJWI7w +NLPq/D/OeTgfbuGrOdnJWZBQZ/CwAdeNtzQLvyj5xG2S9jBv2lWh/nvKgBUshWoW +HaxxVKh7Q4c9JXmSMHokRIe/oeFdAN3V1Bh4/IbR8V4vh1B0XGGo1bpWaM90qZ54 +z5JG1acryHTgoFk48uaDm69wTbgU5Ag63v0clSJH7ns4VZvf9nhYEmdxQl6IebAp +HC50Upysn8NKoXRuOwFJqUevgpAcgp8RDNCKJ3ypNLpbGUE5LKm0CC6lnZbnWnr0 +cHfCP/URRfL/VLFvpTLb +=qZzf +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:30/portsnap-10.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:30/portsnap-9.3.patch =================================================================== --- head/share/security/patches/SA-16:30/portsnap-9.3.patch (nonexistent) +++ head/share/security/patches/SA-16:30/portsnap-9.3.patch (revision 49477) @@ -0,0 +1,49 @@ +--- usr.sbin/portsnap/portsnap/portsnap.sh.orig ++++ usr.sbin/portsnap/portsnap/portsnap.sh +@@ -609,7 +609,7 @@ + # Verify a list of files + fetch_snapshot_verify() { + while read F; do +- if [ "`gunzip -c snap/${F} | ${SHA256} -q`" != ${F} ]; then ++ if [ "`gunzip -c < snap/${F}.gz | ${SHA256} -q`" != ${F} ]; then + echo "snapshot corrupt." + return 1 + fi +@@ -644,11 +644,18 @@ + cut -f 2 -d '|' tINDEX.new | fetch_snapshot_verify || return 1 + # Extract the index + rm -f INDEX.new +- gunzip -c snap/`look INDEX tINDEX.new | ++ gunzip -c < snap/`look INDEX tINDEX.new | + cut -f 2 -d '|'`.gz > INDEX.new + fetch_index_sanity || return 1 + # Verify the snapshot contents + cut -f 2 -d '|' INDEX.new | fetch_snapshot_verify || return 1 ++ cut -f 2 -d '|' tINDEX.new INDEX.new | sort -u > files.expected ++ find snap -mindepth 1 | sed -E 's^snap/(.*)\.gz^\1^' | sort > files.snap ++ if ! cmp -s files.expected files.snap; then ++ echo "unexpected files in snapshot." ++ return 1 ++ fi ++ rm files.expected files.snap + echo "done." + + # Move files into their proper locations +@@ -737,7 +744,7 @@ + echo "done." + + # Extract the index +- gunzip -c files/`look INDEX tINDEX.new | ++ gunzip -c < files/`look INDEX tINDEX.new | + cut -f 2 -d '|'`.gz > INDEX.new + fetch_index_sanity || return 1 + +@@ -842,7 +849,7 @@ + echo -n "$1 not provided by portsnap server; " + echo "$2 not being generated." + else +- gunzip -c "${WORKDIR}/files/`look $1 ${WORKDIR}/tINDEX | ++ gunzip -c < "${WORKDIR}/files/`look $1 ${WORKDIR}/tINDEX | + cut -f 2 -d '|'`.gz" | + cat - ${LOCALDESC} | + ${MKINDEX} /dev/stdin > ${PORTSDIR}/$2 Property changes on: head/share/security/patches/SA-16:30/portsnap-9.3.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:30/portsnap-9.3.patch.asc =================================================================== --- head/share/security/patches/SA-16:30/portsnap-9.3.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:30/portsnap-9.3.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PlAAoJEO1n7NZdz2rntIMP/3653gK7bSBhc1Dw68p9OQcE +VqDIE7ucmGjMl9Jk6UrIqMdf54O0lKb+Kf1FuuyERtIBl/c8oTM/ChPvVPyyAVnm ++3GPfoFzfH0UloD6jko9rWdFX0QdrVhZh5tP/TZpDj+FprJm9xgUruKEAmkN0Itz +rvHHI6v2qbXO97lP18jvZhdBExlzICRRgjnduxqbjabb+B6MQdU/Ey8tkussrB+l +tPkTJWEwXfkDGNBx/LF6bM+yh8qlTIOFF9yL8wUXxuG2oKkbS49agPzrTzj5ZLnX +AozV+jnXvNCLGA+eR1rRyfLOtnNh8nbJeOe4fZB/o+595R0YjOsjZLKZAZSajIKV +yIC1j5inK+WbBULYowFb6XL9kg1Y2gc42GkYaOmoEOcQqdcptBpN+c+5W6wM29CD +RouiCAbOxWgwNCAhZMyyS03x2P+sAahAUrZ7lrEqitoy/gLn82etFAu/vid6PAIo +u79rT4Wq1TBeow7fu37KIWtuFvfKl0BSe02SdjWw+5taZisBc84LYQMGdB8sA2Rl +7t99xGx0NwA/CsONv2rsvjxFXnjvN7ZLw7ccmpMSl90LORwXrn1WK0G4O6hbFYbp +DB4UNReyF7bnwWJzRsN0hQUXamrCJlv3DFVCzdkd3A5iN1gxQYPGPX1A2eI1oVUw +JPpNrRIH+dqkRc9vw+Ba +=Pic0 +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:30/portsnap-9.3.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:31/libarchive-10.1.patch =================================================================== --- head/share/security/patches/SA-16:31/libarchive-10.1.patch (nonexistent) +++ head/share/security/patches/SA-16:31/libarchive-10.1.patch (revision 49477) @@ -0,0 +1,1270 @@ +--- contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c.orig ++++ contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c +@@ -409,9 +409,7 @@ + { + const char *accpath; + acl_t acl; +-#if HAVE_ACL_IS_TRIVIAL_NP + int r; +-#endif + + accpath = archive_entry_sourcepath(entry); + if (accpath == NULL) +@@ -443,9 +441,13 @@ + } + #endif + if (acl != NULL) { +- translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); ++ r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); + acl_free(acl); +- return (ARCHIVE_OK); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate NFSv4 ACLs: %s", accpath); ++ } ++ return (r); + } + + /* Retrieve access ACL from file. */ +@@ -464,18 +466,29 @@ + else + acl = acl_get_file(accpath, ACL_TYPE_ACCESS); + if (acl != NULL) { +- translate_acl(a, entry, acl, ++ r = translate_acl(a, entry, acl, + ARCHIVE_ENTRY_ACL_TYPE_ACCESS); + acl_free(acl); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate access ACLs: %s", accpath); ++ return (r); ++ } + } + + /* Only directories can have default ACLs. */ + if (S_ISDIR(archive_entry_mode(entry))) { + acl = acl_get_file(accpath, ACL_TYPE_DEFAULT); + if (acl != NULL) { +- translate_acl(a, entry, acl, ++ r = translate_acl(a, entry, acl, + ARCHIVE_ENTRY_ACL_TYPE_DEFAULT); + acl_free(acl); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate default ACLs: %s", ++ accpath); ++ return (r); ++ } + } + } + return (ARCHIVE_OK); +@@ -536,7 +549,11 @@ + // FreeBSD "brands" ACLs as POSIX.1e or NFSv4 + // Make sure the "brand" on this ACL is consistent + // with the default_entry_acl_type bits provided. +- acl_get_brand_np(acl, &brand); ++ if (acl_get_brand_np(acl, &brand) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to read ACL brand"); ++ return (ARCHIVE_WARN); ++ } + switch (brand) { + case ACL_BRAND_POSIX: + switch (default_entry_acl_type) { +@@ -544,30 +561,42 @@ + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + break; + default: +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Invalid ACL entry type for POSIX.1e ACL"); ++ return (ARCHIVE_WARN); + } + break; + case ACL_BRAND_NFS4: + if (default_entry_acl_type & ~ARCHIVE_ENTRY_ACL_TYPE_NFS4) { +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Invalid ACL entry type for NFSv4 ACL"); ++ return (ARCHIVE_WARN); + } + break; + default: +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL brand"); ++ return (ARCHIVE_WARN); + break; + } + + + s = acl_get_entry(acl, ACL_FIRST_ENTRY, &acl_entry); ++ if (s == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get first ACL entry"); ++ return (ARCHIVE_WARN); ++ } + while (s == 1) { + ae_id = -1; + ae_name = NULL; + ae_perm = 0; + +- acl_get_tag_type(acl_entry, &acl_tag); ++ if (acl_get_tag_type(acl_entry, &acl_tag) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get ACL tag type"); ++ return (ARCHIVE_WARN); ++ } + switch (acl_tag) { + case ACL_USER: + ae_id = (int)*(uid_t *)acl_get_qualifier(acl_entry); +@@ -600,12 +629,17 @@ + continue; + } + +- // XXX acl type maps to allow/deny/audit/YYYY bits +- // XXX acl_get_entry_type_np on FreeBSD returns EINVAL for +- // non-NFSv4 ACLs ++ // XXX acl_type maps to allow/deny/audit/YYYY bits + entry_acl_type = default_entry_acl_type; +- r = acl_get_entry_type_np(acl_entry, &acl_type); +- if (r == 0) { ++ if (default_entry_acl_type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) { ++ /* ++ * acl_get_entry_type_np() falis with non-NFSv4 ACLs ++ */ ++ if (acl_get_entry_type_np(acl_entry, &acl_type) != 0) { ++ archive_set_error(&a->archive, errno, "Failed " ++ "to get ACL type from a NFSv4 ACL entry"); ++ return (ARCHIVE_WARN); ++ } + switch (acl_type) { + case ACL_ENTRY_TYPE_ALLOW: + entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALLOW; +@@ -619,28 +653,52 @@ + case ACL_ENTRY_TYPE_ALARM: + entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALARM; + break; ++ default: ++ archive_set_error(&a->archive, errno, ++ "Invalid NFSv4 ACL entry type"); ++ return (ARCHIVE_WARN); + } +- } +- +- /* +- * Libarchive stores "flag" (NFSv4 inheritance bits) +- * in the ae_perm bitmap. +- */ +- acl_get_flagset_np(acl_entry, &acl_flagset); +- for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { +- if (acl_get_flag_np(acl_flagset, +- acl_inherit_map[i].platform_inherit)) +- ae_perm |= acl_inherit_map[i].archive_inherit; + +- } ++ /* ++ * Libarchive stores "flag" (NFSv4 inheritance bits) ++ * in the ae_perm bitmap. ++ * ++ * acl_get_flagset_np() fails with non-NFSv4 ACLs ++ */ ++ if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get flagset from a NFSv4 ACL entry"); ++ return (ARCHIVE_WARN); ++ } ++ for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { ++ r = acl_get_flag_np(acl_flagset, ++ acl_inherit_map[i].platform_inherit); ++ if (r == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to check flag in a NFSv4 " ++ "ACL flagset"); ++ return (ARCHIVE_WARN); ++ } else if (r) ++ ae_perm |= acl_inherit_map[i].archive_inherit; ++ } ++ } + +- acl_get_permset(acl_entry, &acl_permset); +- for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { ++ if (acl_get_permset(acl_entry, &acl_permset) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get ACL permission set"); ++ return (ARCHIVE_WARN); ++ } ++ for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { + /* + * acl_get_perm() is spelled differently on different + * platforms; see above. + */ +- if (ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm)) ++ r = ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm); ++ if (r == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to check permission in an ACL permission set"); ++ return (ARCHIVE_WARN); ++ } else if (r) + ae_perm |= acl_perm_map[i].archive_perm; + } + +@@ -649,6 +707,11 @@ + ae_id, ae_name); + + s = acl_get_entry(acl, ACL_NEXT_ENTRY, &acl_entry); ++ if (s == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get next ACL entry"); ++ return (ARCHIVE_WARN); ++ } + } + return (ARCHIVE_OK); + } +--- contrib/libarchive/libarchive/archive_read_support_format_tar.c.orig ++++ contrib/libarchive/libarchive/archive_read_support_format_tar.c +@@ -136,6 +136,7 @@ + int64_t entry_padding; + int64_t entry_bytes_unconsumed; + int64_t realsize; ++ int sparse_allowed; + struct sparse_block *sparse_list; + struct sparse_block *sparse_last; + int64_t sparse_offset; +@@ -1216,6 +1217,14 @@ + * sparse information in the extended area. + */ + /* FALLTHROUGH */ ++ case '0': ++ /* ++ * Enable sparse file "read" support only for regular ++ * files and explicit GNU sparse files. However, we ++ * don't allow non-standard file types to be sparse. ++ */ ++ tar->sparse_allowed = 1; ++ /* FALLTHROUGH */ + default: /* Regular file and non-standard types */ + /* + * Per POSIX: non-recognized types should always be +@@ -1675,6 +1684,14 @@ + #endif + switch (key[0]) { + case 'G': ++ /* Reject GNU.sparse.* headers on non-regular files. */ ++ if (strncmp(key, "GNU.sparse", 10) == 0 && ++ !tar->sparse_allowed) { ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Non-regular file cannot be sparse"); ++ return (ARCHIVE_FATAL); ++ } ++ + /* GNU "0.0" sparse pax format. */ + if (strcmp(key, "GNU.sparse.numblocks") == 0) { + tar->sparse_offset = -1; +--- contrib/libarchive/libarchive/archive_write_disk_acl.c.orig ++++ contrib/libarchive/libarchive/archive_write_disk_acl.c +@@ -131,6 +131,7 @@ + acl_entry_t acl_entry; + acl_permset_t acl_permset; + acl_flagset_t acl_flagset; ++ int r; + int ret; + int ae_type, ae_permset, ae_tag, ae_id; + uid_t ae_uid; +@@ -144,9 +145,19 @@ + if (entries == 0) + return (ARCHIVE_OK); + acl = acl_init(entries); ++ if (acl == (acl_t)NULL) { ++ archive_set_error(a, errno, ++ "Failed to initialize ACL working storage"); ++ return (ARCHIVE_FAILED); ++ } + while (archive_acl_next(a, abstract_acl, ae_requested_type, &ae_type, + &ae_permset, &ae_tag, &ae_id, &ae_name) == ARCHIVE_OK) { +- acl_create_entry(&acl, &acl_entry); ++ if (acl_create_entry(&acl, &acl_entry) != 0) { ++ archive_set_error(a, errno, ++ "Failed to create a new ACL entry"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + + switch (ae_tag) { + case ARCHIVE_ENTRY_ACL_USER: +@@ -175,47 +186,95 @@ + acl_set_tag_type(acl_entry, ACL_EVERYONE); + break; + default: +- /* XXX */ +- break; ++ archive_set_error(a, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL tag"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; + } + ++ r = 0; + switch (ae_type) { + case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); + break; + case ARCHIVE_ENTRY_ACL_TYPE_DENY: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); + break; + case ARCHIVE_ENTRY_ACL_TYPE_AUDIT: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); + break; + case ARCHIVE_ENTRY_ACL_TYPE_ALARM: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); + break; + case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + // These don't translate directly into the system ACL. + break; + default: +- // XXX error handling here. +- break; ++ archive_set_error(a, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL entry type"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (r != 0) { ++ archive_set_error(a, errno, ++ "Failed to set ACL entry type"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; + } + +- acl_get_permset(acl_entry, &acl_permset); +- acl_clear_perms(acl_permset); ++ if (acl_get_permset(acl_entry, &acl_permset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to get ACL permission set"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (acl_clear_perms(acl_permset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to clear ACL permissions"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + + for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { + if (ae_permset & acl_perm_map[i].archive_perm) +- acl_add_perm(acl_permset, +- acl_perm_map[i].platform_perm); ++ if (acl_add_perm(acl_permset, ++ acl_perm_map[i].platform_perm) != 0) { ++ archive_set_error(a, errno, ++ "Failed to add ACL permission"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + } + + acl_get_flagset_np(acl_entry, &acl_flagset); +- acl_clear_flags_np(acl_flagset); +- for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { +- if (ae_permset & acl_inherit_map[i].archive_inherit) +- acl_add_flag_np(acl_flagset, +- acl_inherit_map[i].platform_inherit); ++ if (acl_type == ACL_TYPE_NFS4) { ++ /* ++ * acl_get_flagset_np() fails with non-NFSv4 ACLs ++ */ ++ if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to get flagset from an NFSv4 ACL entry"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (acl_clear_flags_np(acl_flagset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to clear flags from an NFSv4 ACL flagset"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { ++ if (ae_permset & acl_inherit_map[i].archive_inherit) { ++ if (acl_add_flag_np(acl_flagset, ++ acl_inherit_map[i].platform_inherit) != 0) { ++ archive_set_error(a, errno, ++ "Failed to add flag to NFSv4 ACL flagset"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ } ++ } + } + } + +@@ -243,6 +302,7 @@ + ret = ARCHIVE_WARN; + } + #endif ++exit_free: + acl_free(acl); + return (ret); + } +--- contrib/libarchive/libarchive/archive_write_disk_posix.c.orig ++++ contrib/libarchive/libarchive/archive_write_disk_posix.c +@@ -140,7 +140,17 @@ + #define O_BINARY 0 + #endif + #ifndef O_CLOEXEC +-#define O_CLOEXEC 0 ++#define O_CLOEXEC 0 ++#endif ++ ++/* Ignore non-int O_NOFOLLOW constant. */ ++/* gnulib's fcntl.h does this on AIX, but it seems practical everywhere */ ++#if defined O_NOFOLLOW && !(INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) ++#undef O_NOFOLLOW ++#endif ++ ++#ifndef O_NOFOLLOW ++#define O_NOFOLLOW 0 + #endif + + struct fixup_entry { +@@ -326,12 +336,14 @@ + + #define HFS_BLOCKS(s) ((s) >> 12) + ++static int check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); + static int check_symlinks(struct archive_write_disk *); + static int create_filesystem_object(struct archive_write_disk *); + static struct fixup_entry *current_fixup(struct archive_write_disk *, const char *pathname); + #if defined(HAVE_FCHDIR) && defined(PATH_MAX) + static void edit_deep_directories(struct archive_write_disk *ad); + #endif ++static int cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); + static int cleanup_pathname(struct archive_write_disk *); + static int create_dir(struct archive_write_disk *, char *); + static int create_parent_dir(struct archive_write_disk *, char *); +@@ -1791,7 +1803,7 @@ + char *tail = a->name; + + /* If path is short, avoid the open() below. */ +- if (strlen(tail) <= PATH_MAX) ++ if (strlen(tail) < PATH_MAX) + return; + + /* Try to record our starting dir. */ +@@ -1801,7 +1813,7 @@ + return; + + /* As long as the path is too long... */ +- while (strlen(tail) > PATH_MAX) { ++ while (strlen(tail) >= PATH_MAX) { + /* Locate a dir prefix shorter than PATH_MAX. */ + tail += PATH_MAX - 8; + while (tail > a->name && *tail != '/') +@@ -1996,6 +2008,10 @@ + const char *linkname; + mode_t final_mode, mode; + int r; ++ /* these for check_symlinks_fsobj */ ++ char *linkname_copy; /* non-const copy of linkname */ ++ struct archive_string error_string; ++ int error_number; + + /* We identify hard/symlinks according to the link names. */ + /* Since link(2) and symlink(2) don't handle modes, we're done here. */ +@@ -2004,6 +2020,27 @@ + #if !HAVE_LINK + return (EPERM); + #else ++ archive_string_init(&error_string); ++ linkname_copy = strdup(linkname); ++ if (linkname_copy == NULL) { ++ return (EPERM); ++ } ++ /* TODO: consider using the cleaned-up path as the link target? */ ++ r = cleanup_pathname_fsobj(linkname_copy, &error_number, &error_string, a->flags); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ free(linkname_copy); ++ /* EPERM is more appropriate than error_number for our callers */ ++ return (EPERM); ++ } ++ r = check_symlinks_fsobj(linkname_copy, &error_number, &error_string, a->flags); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ free(linkname_copy); ++ /* EPERM is more appropriate than error_number for our callers */ ++ return (EPERM); ++ } ++ free(linkname_copy); + r = link(linkname, a->name) ? errno : 0; + /* + * New cpio and pax formats allow hardlink entries +@@ -2022,7 +2059,7 @@ + a->deferred = 0; + } else if (r == 0 && a->filesize > 0) { + a->fd = open(a->name, +- O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC); ++ O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC | O_NOFOLLOW); + __archive_ensure_cloexec_flag(a->fd); + if (a->fd < 0) + r = errno; +@@ -2332,110 +2369,233 @@ + return (a->current_fixup); + } + +-/* TODO: Make this work. */ +-/* +- * TODO: The deep-directory support bypasses this; disable deep directory +- * support if we're doing symlink checks. +- */ + /* + * TODO: Someday, integrate this with the deep dir support; they both + * scan the path and both can be optimized by comparing against other + * recent paths. + */ + /* TODO: Extend this to support symlinks on Windows Vista and later. */ ++ ++/* ++ * Checks the given path to see if any elements along it are symlinks. Returns ++ * ARCHIVE_OK if there are none, otherwise puts an error in errmsg. ++ */ + static int +-check_symlinks(struct archive_write_disk *a) ++check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) + { + #if !defined(HAVE_LSTAT) + /* Platform doesn't have lstat, so we can't look for symlinks. */ +- (void)a; /* UNUSED */ ++ (void)path; /* UNUSED */ ++ (void)error_number; /* UNUSED */ ++ (void)error_string; /* UNUSED */ ++ (void)flags; /* UNUSED */ + return (ARCHIVE_OK); + #else +- char *pn; ++ int res = ARCHIVE_OK; ++ char *tail; ++ char *head; ++ int last; + char c; + int r; + struct stat st; ++ int restore_pwd; ++ ++ /* Nothing to do here if name is empty */ ++ if(path[0] == '\0') ++ return (ARCHIVE_OK); + + /* + * Guard against symlink tricks. Reject any archive entry whose + * destination would be altered by a symlink. ++ * ++ * Walk the filename in chunks separated by '/'. For each segment: ++ * - if it doesn't exist, continue ++ * - if it's symlink, abort or remove it ++ * - if it's a directory and it's not the last chunk, cd into it ++ * As we go: ++ * head points to the current (relative) path ++ * tail points to the temporary \0 terminating the segment we're currently examining ++ * c holds what used to be in *tail ++ * last is 1 if this is the last tail ++ */ ++ restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC); ++ __archive_ensure_cloexec_flag(restore_pwd); ++ if (restore_pwd < 0) ++ return (ARCHIVE_FATAL); ++ head = path; ++ tail = path; ++ last = 0; ++ /* TODO: reintroduce a safe cache here? */ ++ /* Skip the root directory if the path is absolute. */ ++ if(tail == path && tail[0] == '/') ++ ++tail; ++ /* Keep going until we've checked the entire name. ++ * head, tail, path all alias the same string, which is ++ * temporarily zeroed at tail, so be careful restoring the ++ * stashed (c=tail[0]) for error messages. ++ * Exiting the loop with break is okay; continue is not. + */ +- /* Whatever we checked last time doesn't need to be re-checked. */ +- pn = a->name; +- if (archive_strlen(&(a->path_safe)) > 0) { +- char *p = a->path_safe.s; +- while ((*pn != '\0') && (*p == *pn)) +- ++p, ++pn; +- } +- c = pn[0]; +- /* Keep going until we've checked the entire name. */ +- while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) { ++ while (!last) { ++ /* Skip the separator we just consumed, plus any adjacent ones */ ++ while (*tail == '/') ++ ++tail; + /* Skip the next path element. */ +- while (*pn != '\0' && *pn != '/') +- ++pn; +- c = pn[0]; +- pn[0] = '\0'; ++ while (*tail != '\0' && *tail != '/') ++ ++tail; ++ /* is this the last path component? */ ++ last = (tail[0] == '\0') || (tail[0] == '/' && tail[1] == '\0'); ++ /* temporarily truncate the string here */ ++ c = tail[0]; ++ tail[0] = '\0'; + /* Check that we haven't hit a symlink. */ +- r = lstat(a->name, &st); ++ r = lstat(head, &st); + if (r != 0) { ++ tail[0] = c; + /* We've hit a dir that doesn't exist; stop now. */ +- if (errno == ENOENT) ++ if (errno == ENOENT) { + break; ++ } else { ++ /* Treat any other error as fatal - best to be paranoid here ++ * Note: This effectively disables deep directory ++ * support when security checks are enabled. ++ * Otherwise, very long pathnames that trigger ++ * an error here could evade the sandbox. ++ * TODO: We could do better, but it would probably ++ * require merging the symlink checks with the ++ * deep-directory editing. */ ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not stat %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; ++ } ++ } else if (S_ISDIR(st.st_mode)) { ++ if (!last) { ++ if (chdir(head) != 0) { ++ tail[0] = c; ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not chdir %s", ++ path); ++ res = (ARCHIVE_FATAL); ++ break; ++ } ++ /* Our view is now from inside this dir: */ ++ head = tail + 1; ++ } + } else if (S_ISLNK(st.st_mode)) { +- if (c == '\0') { ++ if (last) { + /* + * Last element is symlink; remove it + * so we can overwrite it with the + * item being extracted. + */ +- if (unlink(a->name)) { +- archive_set_error(&a->archive, errno, +- "Could not remove symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ if (unlink(head)) { ++ tail[0] = c; ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not remove symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } +- a->pst = NULL; + /* + * Even if we did remove it, a warning + * is in order. The warning is silly, + * though, if we're just replacing one + * symlink with another symlink. + */ +- if (!S_ISLNK(a->mode)) { +- archive_set_error(&a->archive, 0, +- "Removing symlink %s", +- a->name); ++ tail[0] = c; ++ /* FIXME: not sure how important this is to restore ++ if (!S_ISLNK(path)) { ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Removing symlink %s", ++ path); + } ++ */ + /* Symlink gone. No more problem! */ +- pn[0] = c; +- return (0); +- } else if (a->flags & ARCHIVE_EXTRACT_UNLINK) { ++ res = ARCHIVE_OK; ++ break; ++ } else if (flags & ARCHIVE_EXTRACT_UNLINK) { + /* User asked us to remove problems. */ +- if (unlink(a->name) != 0) { +- archive_set_error(&a->archive, 0, +- "Cannot remove intervening symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ if (unlink(head) != 0) { ++ tail[0] = c; ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Cannot remove intervening symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } +- a->pst = NULL; ++ tail[0] = c; + } else { +- archive_set_error(&a->archive, 0, +- "Cannot extract through symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ tail[0] = c; ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Cannot extract through symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } + } ++ /* be sure to always maintain this */ ++ tail[0] = c; ++ if (tail[0] != '\0') ++ tail++; /* Advance to the next segment. */ + } +- pn[0] = c; +- /* We've checked and/or cleaned the whole path, so remember it. */ +- archive_strcpy(&a->path_safe, a->name); +- return (ARCHIVE_OK); ++ /* Catches loop exits via break */ ++ tail[0] = c; ++#ifdef HAVE_FCHDIR ++ /* If we changed directory above, restore it here. */ ++ if (restore_pwd >= 0) { ++ r = fchdir(restore_pwd); ++ if (r != 0) { ++ if(error_number) *error_number = errno; ++ if(error_string) ++ archive_string_sprintf(error_string, ++ "chdir() failure"); ++ } ++ close(restore_pwd); ++ restore_pwd = -1; ++ if (r != 0) { ++ res = (ARCHIVE_FATAL); ++ } ++ } ++#endif ++ /* TODO: reintroduce a safe cache here? */ ++ return res; + #endif + } + ++/* ++ * Check a->name for symlinks, returning ARCHIVE_OK if its clean, otherwise ++ * calls archive_set_error and returns ARCHIVE_{FATAL,FAILED} ++ */ ++static int ++check_symlinks(struct archive_write_disk *a) ++{ ++ struct archive_string error_string; ++ int error_number; ++ int rc; ++ archive_string_init(&error_string); ++ rc = check_symlinks_fsobj(a->name, &error_number, &error_string, a->flags); ++ if (rc != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ } ++ archive_string_free(&error_string); ++ a->pst = NULL; /* to be safe */ ++ return rc; ++} ++ ++ + #if defined(__CYGWIN__) + /* + * 1. Convert a path separator from '\' to '/' . +@@ -2509,15 +2669,17 @@ + * is set) if the path is absolute. + */ + static int +-cleanup_pathname(struct archive_write_disk *a) ++cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) + { + char *dest, *src; + char separator = '\0'; + +- dest = src = a->name; ++ dest = src = path; + if (*src == '\0') { +- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, +- "Invalid empty pathname"); ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Invalid empty pathname"); + return (ARCHIVE_FAILED); + } + +@@ -2526,9 +2688,11 @@ + #endif + /* Skip leading '/'. */ + if (*src == '/') { +- if (a->flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) { +- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, +- "Path is absolute"); ++ if (flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) { ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Path is absolute"); + return (ARCHIVE_FAILED); + } + +@@ -2555,10 +2719,11 @@ + } else if (src[1] == '.') { + if (src[2] == '/' || src[2] == '\0') { + /* Conditionally warn about '..' */ +- if (a->flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) { +- archive_set_error(&a->archive, +- ARCHIVE_ERRNO_MISC, +- "Path contains '..'"); ++ if (flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) { ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Path contains '..'"); + return (ARCHIVE_FAILED); + } + } +@@ -2589,7 +2754,7 @@ + * We've just copied zero or more path elements, not including the + * final '/'. + */ +- if (dest == a->name) { ++ if (dest == path) { + /* + * Nothing got copied. The path must have been something + * like '.' or '/' or './' or '/././././/./'. +@@ -2604,6 +2769,21 @@ + return (ARCHIVE_OK); + } + ++static int ++cleanup_pathname(struct archive_write_disk *a) ++{ ++ struct archive_string error_string; ++ int error_number; ++ int rc; ++ archive_string_init(&error_string); ++ rc = cleanup_pathname_fsobj(a->name, &error_number, &error_string, a->flags); ++ if (rc != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ } ++ archive_string_free(&error_string); ++ return rc; ++} ++ + /* + * Create the parent directory of the specified path, assuming path + * is already in mutable storage. +--- contrib/libarchive/libarchive/test/main.c.orig ++++ contrib/libarchive/libarchive/test/main.c +@@ -1396,6 +1396,31 @@ + return (0); + } + ++/* Verify mode of 'pathname'. */ ++int ++assertion_file_mode(const char *file, int line, const char *pathname, int expected_mode) ++{ ++ int mode; ++ int r; ++ ++ assertion_count(file, line); ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ failure_start(file, line, "assertFileMode not yet implemented for Windows"); ++#else ++ { ++ struct stat st; ++ r = lstat(pathname, &st); ++ mode = (int)(st.st_mode & 0777); ++ } ++ if (r == 0 && mode == expected_mode) ++ return (1); ++ failure_start(file, line, "File %s has mode %o, expected %o", ++ pathname, mode, expected_mode); ++#endif ++ failure_finish(NULL); ++ return (0); ++} ++ + /* Assert that 'pathname' is a dir. If mode >= 0, verify that too. */ + int + assertion_is_dir(const char *file, int line, const char *pathname, int mode) +--- contrib/libarchive/libarchive/test/test.h.orig ++++ contrib/libarchive/libarchive/test/test.h +@@ -176,6 +176,8 @@ + assertion_file_nlinks(__FILE__, __LINE__, pathname, nlinks) + #define assertFileSize(pathname, size) \ + assertion_file_size(__FILE__, __LINE__, pathname, size) ++#define assertFileMode(pathname, mode) \ ++ assertion_file_mode(__FILE__, __LINE__, pathname, mode) + #define assertTextFileContents(text, pathname) \ + assertion_text_file_contents(__FILE__, __LINE__, text, pathname) + #define assertFileContainsLinesAnyOrder(pathname, lines) \ +@@ -239,6 +241,7 @@ + int assertion_file_nlinks(const char *, int, const char *, int); + int assertion_file_not_exists(const char *, int, const char *); + int assertion_file_size(const char *, int, const char *, long); ++int assertion_file_mode(const char *, int, const char *, int); + int assertion_is_dir(const char *, int, const char *, int); + int assertion_is_hardlink(const char *, int, const char *, const char *); + int assertion_is_not_hardlink(const char *, int, const char *, const char *); +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure744.c +@@ -0,0 +1,95 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #744 describes a bug in the sandboxing code that ++ * causes very long pathnames to not get checked for symlinks. ++ */ ++ ++DEFINE_TEST(test_write_disk_secure744) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ size_t buff_size = 8192; ++ char *buff = malloc(buff_size); ++ char *p = buff; ++ int n = 0; ++ int t; ++ ++ assert(buff != NULL); ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ while (p + 500 < buff + buff_size) { ++ memset(p, 'x', 100); ++ p += 100; ++ p[0] = '\0'; ++ ++ buff[0] = ((n / 1000) % 10) + '0'; ++ buff[1] = ((n / 100) % 10)+ '0'; ++ buff[2] = ((n / 10) % 10)+ '0'; ++ buff[3] = ((n / 1) % 10)+ '0'; ++ buff[4] = '_'; ++ ++n; ++ ++ /* Create a symlink pointing to the testworkdir */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, buff); ++ archive_entry_set_mode(ae, S_IFREG | 0777); ++ archive_entry_copy_symlink(ae, testworkdir); ++ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ *p++ = '/'; ++ sprintf(p, "target%d", n); ++ ++ /* Try to create a file through the symlink, should fail. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, buff); ++ archive_entry_set_mode(ae, S_IFDIR | 0777); ++ ++ t = archive_write_header(a, ae); ++ archive_entry_free(ae); ++ failure("Attempt to create target%d via %d-character symlink should have failed", n, (int)strlen(buff)); ++ if(!assertEqualInt(ARCHIVE_FAILED, t)) { ++ break; ++ } ++ } ++ archive_free(a); ++ free(buff); ++#endif ++} +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure745.c +@@ -0,0 +1,79 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #745 describes a bug in the sandboxing code that ++ * allows one to use a symlink to edit the permissions on a file or ++ * directory outside of the sandbox. ++ */ ++ ++DEFINE_TEST(test_write_disk_secure745) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ /* The target dir: The one we're going to try to change permission on */ ++ assertMakeDir("target", 0700); ++ ++ /* The sandbox dir we're going to run inside of. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create a symlink pointing to the target directory */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "sym"); ++ archive_entry_set_mode(ae, AE_IFLNK | 0777); ++ archive_entry_copy_symlink(ae, "../target"); ++ assert(0 == archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Try to alter the target dir through the symlink; this should fail. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "sym"); ++ archive_entry_set_mode(ae, S_IFDIR | 0777); ++ assert(0 == archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Permission of target dir should not have changed. */ ++ assertFileMode("../target", 0700); ++ ++ assert(0 == archive_write_close(a)); ++ archive_write_free(a); ++#endif ++} +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure746.c +@@ -0,0 +1,129 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #746 describes a problem in which hardlink targets are ++ * not adequately checked and can be used to modify entries outside of ++ * the sandbox. ++ */ ++ ++/* ++ * Verify that ARCHIVE_EXTRACT_SECURE_NODOTDOT disallows '..' in hardlink ++ * targets. ++ */ ++DEFINE_TEST(test_write_disk_secure746a) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* The target directory we're going to try to affect. */ ++ assertMakeDir("target", 0700); ++ assertMakeFile("target/foo", 0700, "unmodified"); ++ ++ /* The sandbox dir we're going to work within. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NODOTDOT); ++ ++ /* Attempt to hardlink to the target directory. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "bar"); ++ archive_entry_set_mode(ae, AE_IFREG | 0777); ++ archive_entry_set_size(ae, 8); ++ archive_entry_copy_hardlink(ae, "../target/foo"); ++ assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae)); ++ assertEqualInt(ARCHIVE_FATAL, archive_write_data(a, "modified", 8)); ++ archive_entry_free(ae); ++ ++ /* Verify that target file contents are unchanged. */ ++ assertTextFileContents("unmodified", "../target/foo"); ++#endif ++} ++ ++/* ++ * Verify that ARCHIVE_EXTRACT_SECURE_NOSYMLINK disallows symlinks in hardlink ++ * targets. ++ */ ++DEFINE_TEST(test_write_disk_secure746b) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* The target directory we're going to try to affect. */ ++ assertMakeDir("target", 0700); ++ assertMakeFile("target/foo", 0700, "unmodified"); ++ ++ /* The sandbox dir we're going to work within. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ /* Create a symlink to the target directory. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "symlink"); ++ archive_entry_set_mode(ae, AE_IFLNK | 0777); ++ archive_entry_copy_symlink(ae, "../target"); ++ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Attempt to hardlink to the target directory via the symlink. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "bar"); ++ archive_entry_set_mode(ae, AE_IFREG | 0777); ++ archive_entry_set_size(ae, 8); ++ archive_entry_copy_hardlink(ae, "symlink/foo"); ++ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae)); ++ assertEqualIntA(a, ARCHIVE_FATAL, archive_write_data(a, "modified", 8)); ++ archive_entry_free(ae); ++ ++ /* Verify that target file contents are unchanged. */ ++ assertTextFileContents("unmodified", "../target/foo"); ++ ++ assertEqualIntA(a, ARCHIVE_FATAL, archive_write_close(a)); ++ archive_write_free(a); ++#endif ++} +--- lib/libarchive/test/Makefile.orig ++++ lib/libarchive/test/Makefile +@@ -175,6 +175,9 @@ + test_write_disk_no_hfs_compression.c \ + test_write_disk_perms.c \ + test_write_disk_secure.c \ ++ test_write_disk_secure744.c \ ++ test_write_disk_secure745.c \ ++ test_write_disk_secure746.c \ + test_write_disk_sparse.c \ + test_write_disk_symlink.c \ + test_write_disk_times.c \ Property changes on: head/share/security/patches/SA-16:31/libarchive-10.1.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:31/libarchive-10.1.patch.asc =================================================================== --- head/share/security/patches/SA-16:31/libarchive-10.1.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:31/libarchive-10.1.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PmAAoJEO1n7NZdz2rnn7kQAOUhndMptAsM7FN+wLxFUBHC +GNB9bjulRPcXBM4D2aQcN7If8oG9d7nvmgaphrml8WDkgxUGCoAZyxG0Cty87wYp +gvyMZuhsmIEkKvI9UOH2PeFaVm/qkQrojjFplE/0BFtFLLr6RVGytSR4krYjbZPb +9jj1Q3OL/dHuZFFeyP30yDCFYId5cBLbfNo410iKlX0CZj6lsD6FDMKlXmLqbgrW +pnUP9mb5EHBmAmvZm0bieFAl2W9UdrbjVTR6/IwQLAMeQQpKZFX1eYLkm+FuUlfM +nk5Z26JXoHIDODQBNf5p3sArHRJbLb/8KfZjVpyTAxoDT+kdHHk55oCFDhYMgYHm +Nkyrqoq5oQ4KEGdkuLcWsOvnMzAWn4rjBTpzKHUPk24xG9pbU8LKV7WcnmYlX/n8 +uKk8wjGGrIpdxGRhArkBoiqS5q11Xc2XDgNyHonZLekeNBYC1NpdhuK6Ni45NS6q +/IDFBoOXmxbsQAvcArFCqMPpp1IMQ9zMwefJOMvSwdvFDvK4x6JTrIbFhhWgTp3I +xrlYscQy0rW0HeNucpdaGDzGb9OvzC5LsuA/uKs5vTPFijm6Lwdu9xpSzbT07dVJ +1k7GoctzPJm970THSS7M6y/vbqLS8SWhsiBuA30ftyS2udLJKsAhd7sML4tvut4d +eoyhQFyF38/ITK3qQ/Jo +=w5H8 +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:31/libarchive-10.1.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:31/libarchive-10.2.patch =================================================================== --- head/share/security/patches/SA-16:31/libarchive-10.2.patch (nonexistent) +++ head/share/security/patches/SA-16:31/libarchive-10.2.patch (revision 49477) @@ -0,0 +1,1270 @@ +--- contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c.orig ++++ contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c +@@ -409,9 +409,7 @@ + { + const char *accpath; + acl_t acl; +-#if HAVE_ACL_IS_TRIVIAL_NP + int r; +-#endif + + accpath = archive_entry_sourcepath(entry); + if (accpath == NULL) +@@ -443,9 +441,13 @@ + } + #endif + if (acl != NULL) { +- translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); ++ r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); + acl_free(acl); +- return (ARCHIVE_OK); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate NFSv4 ACLs: %s", accpath); ++ } ++ return (r); + } + + /* Retrieve access ACL from file. */ +@@ -464,18 +466,29 @@ + else + acl = acl_get_file(accpath, ACL_TYPE_ACCESS); + if (acl != NULL) { +- translate_acl(a, entry, acl, ++ r = translate_acl(a, entry, acl, + ARCHIVE_ENTRY_ACL_TYPE_ACCESS); + acl_free(acl); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate access ACLs: %s", accpath); ++ return (r); ++ } + } + + /* Only directories can have default ACLs. */ + if (S_ISDIR(archive_entry_mode(entry))) { + acl = acl_get_file(accpath, ACL_TYPE_DEFAULT); + if (acl != NULL) { +- translate_acl(a, entry, acl, ++ r = translate_acl(a, entry, acl, + ARCHIVE_ENTRY_ACL_TYPE_DEFAULT); + acl_free(acl); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate default ACLs: %s", ++ accpath); ++ return (r); ++ } + } + } + return (ARCHIVE_OK); +@@ -536,7 +549,11 @@ + // FreeBSD "brands" ACLs as POSIX.1e or NFSv4 + // Make sure the "brand" on this ACL is consistent + // with the default_entry_acl_type bits provided. +- acl_get_brand_np(acl, &brand); ++ if (acl_get_brand_np(acl, &brand) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to read ACL brand"); ++ return (ARCHIVE_WARN); ++ } + switch (brand) { + case ACL_BRAND_POSIX: + switch (default_entry_acl_type) { +@@ -544,30 +561,42 @@ + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + break; + default: +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Invalid ACL entry type for POSIX.1e ACL"); ++ return (ARCHIVE_WARN); + } + break; + case ACL_BRAND_NFS4: + if (default_entry_acl_type & ~ARCHIVE_ENTRY_ACL_TYPE_NFS4) { +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Invalid ACL entry type for NFSv4 ACL"); ++ return (ARCHIVE_WARN); + } + break; + default: +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL brand"); ++ return (ARCHIVE_WARN); + break; + } + + + s = acl_get_entry(acl, ACL_FIRST_ENTRY, &acl_entry); ++ if (s == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get first ACL entry"); ++ return (ARCHIVE_WARN); ++ } + while (s == 1) { + ae_id = -1; + ae_name = NULL; + ae_perm = 0; + +- acl_get_tag_type(acl_entry, &acl_tag); ++ if (acl_get_tag_type(acl_entry, &acl_tag) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get ACL tag type"); ++ return (ARCHIVE_WARN); ++ } + switch (acl_tag) { + case ACL_USER: + ae_id = (int)*(uid_t *)acl_get_qualifier(acl_entry); +@@ -600,12 +629,17 @@ + continue; + } + +- // XXX acl type maps to allow/deny/audit/YYYY bits +- // XXX acl_get_entry_type_np on FreeBSD returns EINVAL for +- // non-NFSv4 ACLs ++ // XXX acl_type maps to allow/deny/audit/YYYY bits + entry_acl_type = default_entry_acl_type; +- r = acl_get_entry_type_np(acl_entry, &acl_type); +- if (r == 0) { ++ if (default_entry_acl_type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) { ++ /* ++ * acl_get_entry_type_np() falis with non-NFSv4 ACLs ++ */ ++ if (acl_get_entry_type_np(acl_entry, &acl_type) != 0) { ++ archive_set_error(&a->archive, errno, "Failed " ++ "to get ACL type from a NFSv4 ACL entry"); ++ return (ARCHIVE_WARN); ++ } + switch (acl_type) { + case ACL_ENTRY_TYPE_ALLOW: + entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALLOW; +@@ -619,28 +653,52 @@ + case ACL_ENTRY_TYPE_ALARM: + entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALARM; + break; ++ default: ++ archive_set_error(&a->archive, errno, ++ "Invalid NFSv4 ACL entry type"); ++ return (ARCHIVE_WARN); + } +- } +- +- /* +- * Libarchive stores "flag" (NFSv4 inheritance bits) +- * in the ae_perm bitmap. +- */ +- acl_get_flagset_np(acl_entry, &acl_flagset); +- for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { +- if (acl_get_flag_np(acl_flagset, +- acl_inherit_map[i].platform_inherit)) +- ae_perm |= acl_inherit_map[i].archive_inherit; + +- } ++ /* ++ * Libarchive stores "flag" (NFSv4 inheritance bits) ++ * in the ae_perm bitmap. ++ * ++ * acl_get_flagset_np() fails with non-NFSv4 ACLs ++ */ ++ if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get flagset from a NFSv4 ACL entry"); ++ return (ARCHIVE_WARN); ++ } ++ for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { ++ r = acl_get_flag_np(acl_flagset, ++ acl_inherit_map[i].platform_inherit); ++ if (r == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to check flag in a NFSv4 " ++ "ACL flagset"); ++ return (ARCHIVE_WARN); ++ } else if (r) ++ ae_perm |= acl_inherit_map[i].archive_inherit; ++ } ++ } + +- acl_get_permset(acl_entry, &acl_permset); +- for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { ++ if (acl_get_permset(acl_entry, &acl_permset) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get ACL permission set"); ++ return (ARCHIVE_WARN); ++ } ++ for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { + /* + * acl_get_perm() is spelled differently on different + * platforms; see above. + */ +- if (ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm)) ++ r = ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm); ++ if (r == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to check permission in an ACL permission set"); ++ return (ARCHIVE_WARN); ++ } else if (r) + ae_perm |= acl_perm_map[i].archive_perm; + } + +@@ -649,6 +707,11 @@ + ae_id, ae_name); + + s = acl_get_entry(acl, ACL_NEXT_ENTRY, &acl_entry); ++ if (s == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get next ACL entry"); ++ return (ARCHIVE_WARN); ++ } + } + return (ARCHIVE_OK); + } +--- contrib/libarchive/libarchive/archive_read_support_format_tar.c.orig ++++ contrib/libarchive/libarchive/archive_read_support_format_tar.c +@@ -136,6 +136,7 @@ + int64_t entry_padding; + int64_t entry_bytes_unconsumed; + int64_t realsize; ++ int sparse_allowed; + struct sparse_block *sparse_list; + struct sparse_block *sparse_last; + int64_t sparse_offset; +@@ -1226,6 +1227,14 @@ + * sparse information in the extended area. + */ + /* FALLTHROUGH */ ++ case '0': ++ /* ++ * Enable sparse file "read" support only for regular ++ * files and explicit GNU sparse files. However, we ++ * don't allow non-standard file types to be sparse. ++ */ ++ tar->sparse_allowed = 1; ++ /* FALLTHROUGH */ + default: /* Regular file and non-standard types */ + /* + * Per POSIX: non-recognized types should always be +@@ -1685,6 +1694,14 @@ + #endif + switch (key[0]) { + case 'G': ++ /* Reject GNU.sparse.* headers on non-regular files. */ ++ if (strncmp(key, "GNU.sparse", 10) == 0 && ++ !tar->sparse_allowed) { ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Non-regular file cannot be sparse"); ++ return (ARCHIVE_FATAL); ++ } ++ + /* GNU "0.0" sparse pax format. */ + if (strcmp(key, "GNU.sparse.numblocks") == 0) { + tar->sparse_offset = -1; +--- contrib/libarchive/libarchive/archive_write_disk_acl.c.orig ++++ contrib/libarchive/libarchive/archive_write_disk_acl.c +@@ -131,6 +131,7 @@ + acl_entry_t acl_entry; + acl_permset_t acl_permset; + acl_flagset_t acl_flagset; ++ int r; + int ret; + int ae_type, ae_permset, ae_tag, ae_id; + uid_t ae_uid; +@@ -144,9 +145,19 @@ + if (entries == 0) + return (ARCHIVE_OK); + acl = acl_init(entries); ++ if (acl == (acl_t)NULL) { ++ archive_set_error(a, errno, ++ "Failed to initialize ACL working storage"); ++ return (ARCHIVE_FAILED); ++ } + while (archive_acl_next(a, abstract_acl, ae_requested_type, &ae_type, + &ae_permset, &ae_tag, &ae_id, &ae_name) == ARCHIVE_OK) { +- acl_create_entry(&acl, &acl_entry); ++ if (acl_create_entry(&acl, &acl_entry) != 0) { ++ archive_set_error(a, errno, ++ "Failed to create a new ACL entry"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + + switch (ae_tag) { + case ARCHIVE_ENTRY_ACL_USER: +@@ -175,47 +186,95 @@ + acl_set_tag_type(acl_entry, ACL_EVERYONE); + break; + default: +- /* XXX */ +- break; ++ archive_set_error(a, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL tag"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; + } + ++ r = 0; + switch (ae_type) { + case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); + break; + case ARCHIVE_ENTRY_ACL_TYPE_DENY: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); + break; + case ARCHIVE_ENTRY_ACL_TYPE_AUDIT: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); + break; + case ARCHIVE_ENTRY_ACL_TYPE_ALARM: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); + break; + case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + // These don't translate directly into the system ACL. + break; + default: +- // XXX error handling here. +- break; ++ archive_set_error(a, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL entry type"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (r != 0) { ++ archive_set_error(a, errno, ++ "Failed to set ACL entry type"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; + } + +- acl_get_permset(acl_entry, &acl_permset); +- acl_clear_perms(acl_permset); ++ if (acl_get_permset(acl_entry, &acl_permset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to get ACL permission set"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (acl_clear_perms(acl_permset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to clear ACL permissions"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + + for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { + if (ae_permset & acl_perm_map[i].archive_perm) +- acl_add_perm(acl_permset, +- acl_perm_map[i].platform_perm); ++ if (acl_add_perm(acl_permset, ++ acl_perm_map[i].platform_perm) != 0) { ++ archive_set_error(a, errno, ++ "Failed to add ACL permission"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + } + + acl_get_flagset_np(acl_entry, &acl_flagset); +- acl_clear_flags_np(acl_flagset); +- for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { +- if (ae_permset & acl_inherit_map[i].archive_inherit) +- acl_add_flag_np(acl_flagset, +- acl_inherit_map[i].platform_inherit); ++ if (acl_type == ACL_TYPE_NFS4) { ++ /* ++ * acl_get_flagset_np() fails with non-NFSv4 ACLs ++ */ ++ if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to get flagset from an NFSv4 ACL entry"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (acl_clear_flags_np(acl_flagset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to clear flags from an NFSv4 ACL flagset"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { ++ if (ae_permset & acl_inherit_map[i].archive_inherit) { ++ if (acl_add_flag_np(acl_flagset, ++ acl_inherit_map[i].platform_inherit) != 0) { ++ archive_set_error(a, errno, ++ "Failed to add flag to NFSv4 ACL flagset"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ } ++ } + } + } + +@@ -243,6 +302,7 @@ + ret = ARCHIVE_WARN; + } + #endif ++exit_free: + acl_free(acl); + return (ret); + } +--- contrib/libarchive/libarchive/archive_write_disk_posix.c.orig ++++ contrib/libarchive/libarchive/archive_write_disk_posix.c +@@ -140,7 +140,17 @@ + #define O_BINARY 0 + #endif + #ifndef O_CLOEXEC +-#define O_CLOEXEC 0 ++#define O_CLOEXEC 0 ++#endif ++ ++/* Ignore non-int O_NOFOLLOW constant. */ ++/* gnulib's fcntl.h does this on AIX, but it seems practical everywhere */ ++#if defined O_NOFOLLOW && !(INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) ++#undef O_NOFOLLOW ++#endif ++ ++#ifndef O_NOFOLLOW ++#define O_NOFOLLOW 0 + #endif + + struct fixup_entry { +@@ -326,12 +336,14 @@ + + #define HFS_BLOCKS(s) ((s) >> 12) + ++static int check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); + static int check_symlinks(struct archive_write_disk *); + static int create_filesystem_object(struct archive_write_disk *); + static struct fixup_entry *current_fixup(struct archive_write_disk *, const char *pathname); + #if defined(HAVE_FCHDIR) && defined(PATH_MAX) + static void edit_deep_directories(struct archive_write_disk *ad); + #endif ++static int cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); + static int cleanup_pathname(struct archive_write_disk *); + static int create_dir(struct archive_write_disk *, char *); + static int create_parent_dir(struct archive_write_disk *, char *); +@@ -1791,7 +1803,7 @@ + char *tail = a->name; + + /* If path is short, avoid the open() below. */ +- if (strlen(tail) <= PATH_MAX) ++ if (strlen(tail) < PATH_MAX) + return; + + /* Try to record our starting dir. */ +@@ -1801,7 +1813,7 @@ + return; + + /* As long as the path is too long... */ +- while (strlen(tail) > PATH_MAX) { ++ while (strlen(tail) >= PATH_MAX) { + /* Locate a dir prefix shorter than PATH_MAX. */ + tail += PATH_MAX - 8; + while (tail > a->name && *tail != '/') +@@ -1996,6 +2008,10 @@ + const char *linkname; + mode_t final_mode, mode; + int r; ++ /* these for check_symlinks_fsobj */ ++ char *linkname_copy; /* non-const copy of linkname */ ++ struct archive_string error_string; ++ int error_number; + + /* We identify hard/symlinks according to the link names. */ + /* Since link(2) and symlink(2) don't handle modes, we're done here. */ +@@ -2004,6 +2020,27 @@ + #if !HAVE_LINK + return (EPERM); + #else ++ archive_string_init(&error_string); ++ linkname_copy = strdup(linkname); ++ if (linkname_copy == NULL) { ++ return (EPERM); ++ } ++ /* TODO: consider using the cleaned-up path as the link target? */ ++ r = cleanup_pathname_fsobj(linkname_copy, &error_number, &error_string, a->flags); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ free(linkname_copy); ++ /* EPERM is more appropriate than error_number for our callers */ ++ return (EPERM); ++ } ++ r = check_symlinks_fsobj(linkname_copy, &error_number, &error_string, a->flags); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ free(linkname_copy); ++ /* EPERM is more appropriate than error_number for our callers */ ++ return (EPERM); ++ } ++ free(linkname_copy); + r = link(linkname, a->name) ? errno : 0; + /* + * New cpio and pax formats allow hardlink entries +@@ -2022,7 +2059,7 @@ + a->deferred = 0; + } else if (r == 0 && a->filesize > 0) { + a->fd = open(a->name, +- O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC); ++ O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC | O_NOFOLLOW); + __archive_ensure_cloexec_flag(a->fd); + if (a->fd < 0) + r = errno; +@@ -2332,110 +2369,233 @@ + return (a->current_fixup); + } + +-/* TODO: Make this work. */ +-/* +- * TODO: The deep-directory support bypasses this; disable deep directory +- * support if we're doing symlink checks. +- */ + /* + * TODO: Someday, integrate this with the deep dir support; they both + * scan the path and both can be optimized by comparing against other + * recent paths. + */ + /* TODO: Extend this to support symlinks on Windows Vista and later. */ ++ ++/* ++ * Checks the given path to see if any elements along it are symlinks. Returns ++ * ARCHIVE_OK if there are none, otherwise puts an error in errmsg. ++ */ + static int +-check_symlinks(struct archive_write_disk *a) ++check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) + { + #if !defined(HAVE_LSTAT) + /* Platform doesn't have lstat, so we can't look for symlinks. */ +- (void)a; /* UNUSED */ ++ (void)path; /* UNUSED */ ++ (void)error_number; /* UNUSED */ ++ (void)error_string; /* UNUSED */ ++ (void)flags; /* UNUSED */ + return (ARCHIVE_OK); + #else +- char *pn; ++ int res = ARCHIVE_OK; ++ char *tail; ++ char *head; ++ int last; + char c; + int r; + struct stat st; ++ int restore_pwd; ++ ++ /* Nothing to do here if name is empty */ ++ if(path[0] == '\0') ++ return (ARCHIVE_OK); + + /* + * Guard against symlink tricks. Reject any archive entry whose + * destination would be altered by a symlink. ++ * ++ * Walk the filename in chunks separated by '/'. For each segment: ++ * - if it doesn't exist, continue ++ * - if it's symlink, abort or remove it ++ * - if it's a directory and it's not the last chunk, cd into it ++ * As we go: ++ * head points to the current (relative) path ++ * tail points to the temporary \0 terminating the segment we're currently examining ++ * c holds what used to be in *tail ++ * last is 1 if this is the last tail ++ */ ++ restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC); ++ __archive_ensure_cloexec_flag(restore_pwd); ++ if (restore_pwd < 0) ++ return (ARCHIVE_FATAL); ++ head = path; ++ tail = path; ++ last = 0; ++ /* TODO: reintroduce a safe cache here? */ ++ /* Skip the root directory if the path is absolute. */ ++ if(tail == path && tail[0] == '/') ++ ++tail; ++ /* Keep going until we've checked the entire name. ++ * head, tail, path all alias the same string, which is ++ * temporarily zeroed at tail, so be careful restoring the ++ * stashed (c=tail[0]) for error messages. ++ * Exiting the loop with break is okay; continue is not. + */ +- /* Whatever we checked last time doesn't need to be re-checked. */ +- pn = a->name; +- if (archive_strlen(&(a->path_safe)) > 0) { +- char *p = a->path_safe.s; +- while ((*pn != '\0') && (*p == *pn)) +- ++p, ++pn; +- } +- c = pn[0]; +- /* Keep going until we've checked the entire name. */ +- while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) { ++ while (!last) { ++ /* Skip the separator we just consumed, plus any adjacent ones */ ++ while (*tail == '/') ++ ++tail; + /* Skip the next path element. */ +- while (*pn != '\0' && *pn != '/') +- ++pn; +- c = pn[0]; +- pn[0] = '\0'; ++ while (*tail != '\0' && *tail != '/') ++ ++tail; ++ /* is this the last path component? */ ++ last = (tail[0] == '\0') || (tail[0] == '/' && tail[1] == '\0'); ++ /* temporarily truncate the string here */ ++ c = tail[0]; ++ tail[0] = '\0'; + /* Check that we haven't hit a symlink. */ +- r = lstat(a->name, &st); ++ r = lstat(head, &st); + if (r != 0) { ++ tail[0] = c; + /* We've hit a dir that doesn't exist; stop now. */ +- if (errno == ENOENT) ++ if (errno == ENOENT) { + break; ++ } else { ++ /* Treat any other error as fatal - best to be paranoid here ++ * Note: This effectively disables deep directory ++ * support when security checks are enabled. ++ * Otherwise, very long pathnames that trigger ++ * an error here could evade the sandbox. ++ * TODO: We could do better, but it would probably ++ * require merging the symlink checks with the ++ * deep-directory editing. */ ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not stat %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; ++ } ++ } else if (S_ISDIR(st.st_mode)) { ++ if (!last) { ++ if (chdir(head) != 0) { ++ tail[0] = c; ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not chdir %s", ++ path); ++ res = (ARCHIVE_FATAL); ++ break; ++ } ++ /* Our view is now from inside this dir: */ ++ head = tail + 1; ++ } + } else if (S_ISLNK(st.st_mode)) { +- if (c == '\0') { ++ if (last) { + /* + * Last element is symlink; remove it + * so we can overwrite it with the + * item being extracted. + */ +- if (unlink(a->name)) { +- archive_set_error(&a->archive, errno, +- "Could not remove symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ if (unlink(head)) { ++ tail[0] = c; ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not remove symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } +- a->pst = NULL; + /* + * Even if we did remove it, a warning + * is in order. The warning is silly, + * though, if we're just replacing one + * symlink with another symlink. + */ +- if (!S_ISLNK(a->mode)) { +- archive_set_error(&a->archive, 0, +- "Removing symlink %s", +- a->name); ++ tail[0] = c; ++ /* FIXME: not sure how important this is to restore ++ if (!S_ISLNK(path)) { ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Removing symlink %s", ++ path); + } ++ */ + /* Symlink gone. No more problem! */ +- pn[0] = c; +- return (0); +- } else if (a->flags & ARCHIVE_EXTRACT_UNLINK) { ++ res = ARCHIVE_OK; ++ break; ++ } else if (flags & ARCHIVE_EXTRACT_UNLINK) { + /* User asked us to remove problems. */ +- if (unlink(a->name) != 0) { +- archive_set_error(&a->archive, 0, +- "Cannot remove intervening symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ if (unlink(head) != 0) { ++ tail[0] = c; ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Cannot remove intervening symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } +- a->pst = NULL; ++ tail[0] = c; + } else { +- archive_set_error(&a->archive, 0, +- "Cannot extract through symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ tail[0] = c; ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Cannot extract through symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } + } ++ /* be sure to always maintain this */ ++ tail[0] = c; ++ if (tail[0] != '\0') ++ tail++; /* Advance to the next segment. */ + } +- pn[0] = c; +- /* We've checked and/or cleaned the whole path, so remember it. */ +- archive_strcpy(&a->path_safe, a->name); +- return (ARCHIVE_OK); ++ /* Catches loop exits via break */ ++ tail[0] = c; ++#ifdef HAVE_FCHDIR ++ /* If we changed directory above, restore it here. */ ++ if (restore_pwd >= 0) { ++ r = fchdir(restore_pwd); ++ if (r != 0) { ++ if(error_number) *error_number = errno; ++ if(error_string) ++ archive_string_sprintf(error_string, ++ "chdir() failure"); ++ } ++ close(restore_pwd); ++ restore_pwd = -1; ++ if (r != 0) { ++ res = (ARCHIVE_FATAL); ++ } ++ } ++#endif ++ /* TODO: reintroduce a safe cache here? */ ++ return res; + #endif + } + ++/* ++ * Check a->name for symlinks, returning ARCHIVE_OK if its clean, otherwise ++ * calls archive_set_error and returns ARCHIVE_{FATAL,FAILED} ++ */ ++static int ++check_symlinks(struct archive_write_disk *a) ++{ ++ struct archive_string error_string; ++ int error_number; ++ int rc; ++ archive_string_init(&error_string); ++ rc = check_symlinks_fsobj(a->name, &error_number, &error_string, a->flags); ++ if (rc != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ } ++ archive_string_free(&error_string); ++ a->pst = NULL; /* to be safe */ ++ return rc; ++} ++ ++ + #if defined(__CYGWIN__) + /* + * 1. Convert a path separator from '\' to '/' . +@@ -2509,15 +2669,17 @@ + * is set) if the path is absolute. + */ + static int +-cleanup_pathname(struct archive_write_disk *a) ++cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) + { + char *dest, *src; + char separator = '\0'; + +- dest = src = a->name; ++ dest = src = path; + if (*src == '\0') { +- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, +- "Invalid empty pathname"); ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Invalid empty pathname"); + return (ARCHIVE_FAILED); + } + +@@ -2526,9 +2688,11 @@ + #endif + /* Skip leading '/'. */ + if (*src == '/') { +- if (a->flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) { +- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, +- "Path is absolute"); ++ if (flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) { ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Path is absolute"); + return (ARCHIVE_FAILED); + } + +@@ -2555,10 +2719,11 @@ + } else if (src[1] == '.') { + if (src[2] == '/' || src[2] == '\0') { + /* Conditionally warn about '..' */ +- if (a->flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) { +- archive_set_error(&a->archive, +- ARCHIVE_ERRNO_MISC, +- "Path contains '..'"); ++ if (flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) { ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Path contains '..'"); + return (ARCHIVE_FAILED); + } + } +@@ -2589,7 +2754,7 @@ + * We've just copied zero or more path elements, not including the + * final '/'. + */ +- if (dest == a->name) { ++ if (dest == path) { + /* + * Nothing got copied. The path must have been something + * like '.' or '/' or './' or '/././././/./'. +@@ -2604,6 +2769,21 @@ + return (ARCHIVE_OK); + } + ++static int ++cleanup_pathname(struct archive_write_disk *a) ++{ ++ struct archive_string error_string; ++ int error_number; ++ int rc; ++ archive_string_init(&error_string); ++ rc = cleanup_pathname_fsobj(a->name, &error_number, &error_string, a->flags); ++ if (rc != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ } ++ archive_string_free(&error_string); ++ return rc; ++} ++ + /* + * Create the parent directory of the specified path, assuming path + * is already in mutable storage. +--- contrib/libarchive/libarchive/test/main.c.orig ++++ contrib/libarchive/libarchive/test/main.c +@@ -1396,6 +1396,31 @@ + return (0); + } + ++/* Verify mode of 'pathname'. */ ++int ++assertion_file_mode(const char *file, int line, const char *pathname, int expected_mode) ++{ ++ int mode; ++ int r; ++ ++ assertion_count(file, line); ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ failure_start(file, line, "assertFileMode not yet implemented for Windows"); ++#else ++ { ++ struct stat st; ++ r = lstat(pathname, &st); ++ mode = (int)(st.st_mode & 0777); ++ } ++ if (r == 0 && mode == expected_mode) ++ return (1); ++ failure_start(file, line, "File %s has mode %o, expected %o", ++ pathname, mode, expected_mode); ++#endif ++ failure_finish(NULL); ++ return (0); ++} ++ + /* Assert that 'pathname' is a dir. If mode >= 0, verify that too. */ + int + assertion_is_dir(const char *file, int line, const char *pathname, int mode) +--- contrib/libarchive/libarchive/test/test.h.orig ++++ contrib/libarchive/libarchive/test/test.h +@@ -176,6 +176,8 @@ + assertion_file_nlinks(__FILE__, __LINE__, pathname, nlinks) + #define assertFileSize(pathname, size) \ + assertion_file_size(__FILE__, __LINE__, pathname, size) ++#define assertFileMode(pathname, mode) \ ++ assertion_file_mode(__FILE__, __LINE__, pathname, mode) + #define assertTextFileContents(text, pathname) \ + assertion_text_file_contents(__FILE__, __LINE__, text, pathname) + #define assertFileContainsLinesAnyOrder(pathname, lines) \ +@@ -239,6 +241,7 @@ + int assertion_file_nlinks(const char *, int, const char *, int); + int assertion_file_not_exists(const char *, int, const char *); + int assertion_file_size(const char *, int, const char *, long); ++int assertion_file_mode(const char *, int, const char *, int); + int assertion_is_dir(const char *, int, const char *, int); + int assertion_is_hardlink(const char *, int, const char *, const char *); + int assertion_is_not_hardlink(const char *, int, const char *, const char *); +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure744.c +@@ -0,0 +1,95 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #744 describes a bug in the sandboxing code that ++ * causes very long pathnames to not get checked for symlinks. ++ */ ++ ++DEFINE_TEST(test_write_disk_secure744) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ size_t buff_size = 8192; ++ char *buff = malloc(buff_size); ++ char *p = buff; ++ int n = 0; ++ int t; ++ ++ assert(buff != NULL); ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ while (p + 500 < buff + buff_size) { ++ memset(p, 'x', 100); ++ p += 100; ++ p[0] = '\0'; ++ ++ buff[0] = ((n / 1000) % 10) + '0'; ++ buff[1] = ((n / 100) % 10)+ '0'; ++ buff[2] = ((n / 10) % 10)+ '0'; ++ buff[3] = ((n / 1) % 10)+ '0'; ++ buff[4] = '_'; ++ ++n; ++ ++ /* Create a symlink pointing to the testworkdir */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, buff); ++ archive_entry_set_mode(ae, S_IFREG | 0777); ++ archive_entry_copy_symlink(ae, testworkdir); ++ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ *p++ = '/'; ++ sprintf(p, "target%d", n); ++ ++ /* Try to create a file through the symlink, should fail. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, buff); ++ archive_entry_set_mode(ae, S_IFDIR | 0777); ++ ++ t = archive_write_header(a, ae); ++ archive_entry_free(ae); ++ failure("Attempt to create target%d via %d-character symlink should have failed", n, (int)strlen(buff)); ++ if(!assertEqualInt(ARCHIVE_FAILED, t)) { ++ break; ++ } ++ } ++ archive_free(a); ++ free(buff); ++#endif ++} +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure745.c +@@ -0,0 +1,79 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #745 describes a bug in the sandboxing code that ++ * allows one to use a symlink to edit the permissions on a file or ++ * directory outside of the sandbox. ++ */ ++ ++DEFINE_TEST(test_write_disk_secure745) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ /* The target dir: The one we're going to try to change permission on */ ++ assertMakeDir("target", 0700); ++ ++ /* The sandbox dir we're going to run inside of. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create a symlink pointing to the target directory */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "sym"); ++ archive_entry_set_mode(ae, AE_IFLNK | 0777); ++ archive_entry_copy_symlink(ae, "../target"); ++ assert(0 == archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Try to alter the target dir through the symlink; this should fail. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "sym"); ++ archive_entry_set_mode(ae, S_IFDIR | 0777); ++ assert(0 == archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Permission of target dir should not have changed. */ ++ assertFileMode("../target", 0700); ++ ++ assert(0 == archive_write_close(a)); ++ archive_write_free(a); ++#endif ++} +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure746.c +@@ -0,0 +1,129 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #746 describes a problem in which hardlink targets are ++ * not adequately checked and can be used to modify entries outside of ++ * the sandbox. ++ */ ++ ++/* ++ * Verify that ARCHIVE_EXTRACT_SECURE_NODOTDOT disallows '..' in hardlink ++ * targets. ++ */ ++DEFINE_TEST(test_write_disk_secure746a) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* The target directory we're going to try to affect. */ ++ assertMakeDir("target", 0700); ++ assertMakeFile("target/foo", 0700, "unmodified"); ++ ++ /* The sandbox dir we're going to work within. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NODOTDOT); ++ ++ /* Attempt to hardlink to the target directory. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "bar"); ++ archive_entry_set_mode(ae, AE_IFREG | 0777); ++ archive_entry_set_size(ae, 8); ++ archive_entry_copy_hardlink(ae, "../target/foo"); ++ assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae)); ++ assertEqualInt(ARCHIVE_FATAL, archive_write_data(a, "modified", 8)); ++ archive_entry_free(ae); ++ ++ /* Verify that target file contents are unchanged. */ ++ assertTextFileContents("unmodified", "../target/foo"); ++#endif ++} ++ ++/* ++ * Verify that ARCHIVE_EXTRACT_SECURE_NOSYMLINK disallows symlinks in hardlink ++ * targets. ++ */ ++DEFINE_TEST(test_write_disk_secure746b) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* The target directory we're going to try to affect. */ ++ assertMakeDir("target", 0700); ++ assertMakeFile("target/foo", 0700, "unmodified"); ++ ++ /* The sandbox dir we're going to work within. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ /* Create a symlink to the target directory. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "symlink"); ++ archive_entry_set_mode(ae, AE_IFLNK | 0777); ++ archive_entry_copy_symlink(ae, "../target"); ++ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Attempt to hardlink to the target directory via the symlink. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "bar"); ++ archive_entry_set_mode(ae, AE_IFREG | 0777); ++ archive_entry_set_size(ae, 8); ++ archive_entry_copy_hardlink(ae, "symlink/foo"); ++ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae)); ++ assertEqualIntA(a, ARCHIVE_FATAL, archive_write_data(a, "modified", 8)); ++ archive_entry_free(ae); ++ ++ /* Verify that target file contents are unchanged. */ ++ assertTextFileContents("unmodified", "../target/foo"); ++ ++ assertEqualIntA(a, ARCHIVE_FATAL, archive_write_close(a)); ++ archive_write_free(a); ++#endif ++} +--- lib/libarchive/test/Makefile.orig ++++ lib/libarchive/test/Makefile +@@ -176,6 +176,9 @@ + test_write_disk_no_hfs_compression.c \ + test_write_disk_perms.c \ + test_write_disk_secure.c \ ++ test_write_disk_secure744.c \ ++ test_write_disk_secure745.c \ ++ test_write_disk_secure746.c \ + test_write_disk_sparse.c \ + test_write_disk_symlink.c \ + test_write_disk_times.c \ Property changes on: head/share/security/patches/SA-16:31/libarchive-10.2.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:31/libarchive-10.2.patch.asc =================================================================== --- head/share/security/patches/SA-16:31/libarchive-10.2.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:31/libarchive-10.2.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PmAAoJEO1n7NZdz2rn4pcQANwh2y75/IJsBmdNHJ039vBS +oSfzGTH+k1EWswJfudVa50qQsZV4DFhbHOlTvocEtBQWuxP7d/MTh9cCFX1c2bmg +gD/AVe24rZoikv/J35uKRyEL4145vAMLUikr6BZCcFe63XJ0YaFHzLNlMn5j31dl +yRDHI3KH6DCTgEjVHv0CsnagLtqA5PIQIa5ck9zhkAcmC7BYbk3zqOERkj9la7h1 +HODayA9l8Uludie0aUpSSKEr41aY0C7go7sC4J29zbY2oKPvMEE8fitnl2h5tzqy +BFY5ZbJWpx264GNu3mp7sOrn6wTqyCW2IvfDIJ36jcvN2KWb+Nt4bVt9Apv7hltg +KUc/POJxrcISPtirQhDFNtclPrCyTT00pQigin8wT9rFZzJapW90hN22HFcF9EaN ++Xqwu1cJudjRfKHYyhUekLU9jhk3y8BI2UdMDhBEv6xnJ+9Cvjb5V3Khvyv/OcTV +wZ7KJnxxaQlbfIfW8VHs9nZct8QEBXZQZ7rm/tSBv9TKJNgVQgtuElSkSw8mA3Nk +9T97AVc37/R0urwM8F2A5rpm12roPG0RvkYPAbKfpaL5QklsnI7QlLJ3DYT/PgPe +HAf8mUqKwqUjsI3xlyH+UJ5fGPpUYO5gRXUq4Jj8xYbzbRR0TUfyJKbAhQecarKW +8sd5IddIZQ64/Pf9+tCM +=b7yC +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:31/libarchive-10.2.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:31/libarchive-10.3.patch =================================================================== --- head/share/security/patches/SA-16:31/libarchive-10.3.patch (nonexistent) +++ head/share/security/patches/SA-16:31/libarchive-10.3.patch (revision 49477) @@ -0,0 +1,1270 @@ +--- contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c.orig ++++ contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c +@@ -409,9 +409,7 @@ + { + const char *accpath; + acl_t acl; +-#if HAVE_ACL_IS_TRIVIAL_NP + int r; +-#endif + + accpath = archive_entry_sourcepath(entry); + if (accpath == NULL) +@@ -443,9 +441,13 @@ + } + #endif + if (acl != NULL) { +- translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); ++ r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); + acl_free(acl); +- return (ARCHIVE_OK); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate NFSv4 ACLs: %s", accpath); ++ } ++ return (r); + } + + /* Retrieve access ACL from file. */ +@@ -464,18 +466,29 @@ + else + acl = acl_get_file(accpath, ACL_TYPE_ACCESS); + if (acl != NULL) { +- translate_acl(a, entry, acl, ++ r = translate_acl(a, entry, acl, + ARCHIVE_ENTRY_ACL_TYPE_ACCESS); + acl_free(acl); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate access ACLs: %s", accpath); ++ return (r); ++ } + } + + /* Only directories can have default ACLs. */ + if (S_ISDIR(archive_entry_mode(entry))) { + acl = acl_get_file(accpath, ACL_TYPE_DEFAULT); + if (acl != NULL) { +- translate_acl(a, entry, acl, ++ r = translate_acl(a, entry, acl, + ARCHIVE_ENTRY_ACL_TYPE_DEFAULT); + acl_free(acl); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, errno, ++ "Couldn't translate default ACLs: %s", ++ accpath); ++ return (r); ++ } + } + } + return (ARCHIVE_OK); +@@ -536,7 +549,11 @@ + // FreeBSD "brands" ACLs as POSIX.1e or NFSv4 + // Make sure the "brand" on this ACL is consistent + // with the default_entry_acl_type bits provided. +- acl_get_brand_np(acl, &brand); ++ if (acl_get_brand_np(acl, &brand) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to read ACL brand"); ++ return (ARCHIVE_WARN); ++ } + switch (brand) { + case ACL_BRAND_POSIX: + switch (default_entry_acl_type) { +@@ -544,30 +561,42 @@ + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + break; + default: +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Invalid ACL entry type for POSIX.1e ACL"); ++ return (ARCHIVE_WARN); + } + break; + case ACL_BRAND_NFS4: + if (default_entry_acl_type & ~ARCHIVE_ENTRY_ACL_TYPE_NFS4) { +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Invalid ACL entry type for NFSv4 ACL"); ++ return (ARCHIVE_WARN); + } + break; + default: +- // XXX set warning message? +- return ARCHIVE_FAILED; ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL brand"); ++ return (ARCHIVE_WARN); + break; + } + + + s = acl_get_entry(acl, ACL_FIRST_ENTRY, &acl_entry); ++ if (s == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get first ACL entry"); ++ return (ARCHIVE_WARN); ++ } + while (s == 1) { + ae_id = -1; + ae_name = NULL; + ae_perm = 0; + +- acl_get_tag_type(acl_entry, &acl_tag); ++ if (acl_get_tag_type(acl_entry, &acl_tag) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get ACL tag type"); ++ return (ARCHIVE_WARN); ++ } + switch (acl_tag) { + case ACL_USER: + ae_id = (int)*(uid_t *)acl_get_qualifier(acl_entry); +@@ -600,12 +629,17 @@ + continue; + } + +- // XXX acl type maps to allow/deny/audit/YYYY bits +- // XXX acl_get_entry_type_np on FreeBSD returns EINVAL for +- // non-NFSv4 ACLs ++ // XXX acl_type maps to allow/deny/audit/YYYY bits + entry_acl_type = default_entry_acl_type; +- r = acl_get_entry_type_np(acl_entry, &acl_type); +- if (r == 0) { ++ if (default_entry_acl_type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) { ++ /* ++ * acl_get_entry_type_np() falis with non-NFSv4 ACLs ++ */ ++ if (acl_get_entry_type_np(acl_entry, &acl_type) != 0) { ++ archive_set_error(&a->archive, errno, "Failed " ++ "to get ACL type from a NFSv4 ACL entry"); ++ return (ARCHIVE_WARN); ++ } + switch (acl_type) { + case ACL_ENTRY_TYPE_ALLOW: + entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALLOW; +@@ -619,28 +653,52 @@ + case ACL_ENTRY_TYPE_ALARM: + entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALARM; + break; ++ default: ++ archive_set_error(&a->archive, errno, ++ "Invalid NFSv4 ACL entry type"); ++ return (ARCHIVE_WARN); + } +- } +- +- /* +- * Libarchive stores "flag" (NFSv4 inheritance bits) +- * in the ae_perm bitmap. +- */ +- acl_get_flagset_np(acl_entry, &acl_flagset); +- for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { +- if (acl_get_flag_np(acl_flagset, +- acl_inherit_map[i].platform_inherit)) +- ae_perm |= acl_inherit_map[i].archive_inherit; + +- } ++ /* ++ * Libarchive stores "flag" (NFSv4 inheritance bits) ++ * in the ae_perm bitmap. ++ * ++ * acl_get_flagset_np() fails with non-NFSv4 ACLs ++ */ ++ if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get flagset from a NFSv4 ACL entry"); ++ return (ARCHIVE_WARN); ++ } ++ for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { ++ r = acl_get_flag_np(acl_flagset, ++ acl_inherit_map[i].platform_inherit); ++ if (r == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to check flag in a NFSv4 " ++ "ACL flagset"); ++ return (ARCHIVE_WARN); ++ } else if (r) ++ ae_perm |= acl_inherit_map[i].archive_inherit; ++ } ++ } + +- acl_get_permset(acl_entry, &acl_permset); +- for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { ++ if (acl_get_permset(acl_entry, &acl_permset) != 0) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get ACL permission set"); ++ return (ARCHIVE_WARN); ++ } ++ for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { + /* + * acl_get_perm() is spelled differently on different + * platforms; see above. + */ +- if (ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm)) ++ r = ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm); ++ if (r == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to check permission in an ACL permission set"); ++ return (ARCHIVE_WARN); ++ } else if (r) + ae_perm |= acl_perm_map[i].archive_perm; + } + +@@ -649,6 +707,11 @@ + ae_id, ae_name); + + s = acl_get_entry(acl, ACL_NEXT_ENTRY, &acl_entry); ++ if (s == -1) { ++ archive_set_error(&a->archive, errno, ++ "Failed to get next ACL entry"); ++ return (ARCHIVE_WARN); ++ } + } + return (ARCHIVE_OK); + } +--- contrib/libarchive/libarchive/archive_read_support_format_tar.c.orig ++++ contrib/libarchive/libarchive/archive_read_support_format_tar.c +@@ -136,6 +136,7 @@ + int64_t entry_padding; + int64_t entry_bytes_unconsumed; + int64_t realsize; ++ int sparse_allowed; + struct sparse_block *sparse_list; + struct sparse_block *sparse_last; + int64_t sparse_offset; +@@ -1226,6 +1227,14 @@ + * sparse information in the extended area. + */ + /* FALLTHROUGH */ ++ case '0': ++ /* ++ * Enable sparse file "read" support only for regular ++ * files and explicit GNU sparse files. However, we ++ * don't allow non-standard file types to be sparse. ++ */ ++ tar->sparse_allowed = 1; ++ /* FALLTHROUGH */ + default: /* Regular file and non-standard types */ + /* + * Per POSIX: non-recognized types should always be +@@ -1685,6 +1694,14 @@ + #endif + switch (key[0]) { + case 'G': ++ /* Reject GNU.sparse.* headers on non-regular files. */ ++ if (strncmp(key, "GNU.sparse", 10) == 0 && ++ !tar->sparse_allowed) { ++ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, ++ "Non-regular file cannot be sparse"); ++ return (ARCHIVE_FATAL); ++ } ++ + /* GNU "0.0" sparse pax format. */ + if (strcmp(key, "GNU.sparse.numblocks") == 0) { + tar->sparse_offset = -1; +--- contrib/libarchive/libarchive/archive_write_disk_acl.c.orig ++++ contrib/libarchive/libarchive/archive_write_disk_acl.c +@@ -131,6 +131,7 @@ + acl_entry_t acl_entry; + acl_permset_t acl_permset; + acl_flagset_t acl_flagset; ++ int r; + int ret; + int ae_type, ae_permset, ae_tag, ae_id; + uid_t ae_uid; +@@ -144,9 +145,19 @@ + if (entries == 0) + return (ARCHIVE_OK); + acl = acl_init(entries); ++ if (acl == (acl_t)NULL) { ++ archive_set_error(a, errno, ++ "Failed to initialize ACL working storage"); ++ return (ARCHIVE_FAILED); ++ } + while (archive_acl_next(a, abstract_acl, ae_requested_type, &ae_type, + &ae_permset, &ae_tag, &ae_id, &ae_name) == ARCHIVE_OK) { +- acl_create_entry(&acl, &acl_entry); ++ if (acl_create_entry(&acl, &acl_entry) != 0) { ++ archive_set_error(a, errno, ++ "Failed to create a new ACL entry"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + + switch (ae_tag) { + case ARCHIVE_ENTRY_ACL_USER: +@@ -175,47 +186,95 @@ + acl_set_tag_type(acl_entry, ACL_EVERYONE); + break; + default: +- /* XXX */ +- break; ++ archive_set_error(a, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL tag"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; + } + ++ r = 0; + switch (ae_type) { + case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); + break; + case ARCHIVE_ENTRY_ACL_TYPE_DENY: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); + break; + case ARCHIVE_ENTRY_ACL_TYPE_AUDIT: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); + break; + case ARCHIVE_ENTRY_ACL_TYPE_ALARM: +- acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); ++ r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); + break; + case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + // These don't translate directly into the system ACL. + break; + default: +- // XXX error handling here. +- break; ++ archive_set_error(a, ARCHIVE_ERRNO_MISC, ++ "Unknown ACL entry type"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (r != 0) { ++ archive_set_error(a, errno, ++ "Failed to set ACL entry type"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; + } + +- acl_get_permset(acl_entry, &acl_permset); +- acl_clear_perms(acl_permset); ++ if (acl_get_permset(acl_entry, &acl_permset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to get ACL permission set"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (acl_clear_perms(acl_permset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to clear ACL permissions"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + + for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { + if (ae_permset & acl_perm_map[i].archive_perm) +- acl_add_perm(acl_permset, +- acl_perm_map[i].platform_perm); ++ if (acl_add_perm(acl_permset, ++ acl_perm_map[i].platform_perm) != 0) { ++ archive_set_error(a, errno, ++ "Failed to add ACL permission"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } + } + + acl_get_flagset_np(acl_entry, &acl_flagset); +- acl_clear_flags_np(acl_flagset); +- for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { +- if (ae_permset & acl_inherit_map[i].archive_inherit) +- acl_add_flag_np(acl_flagset, +- acl_inherit_map[i].platform_inherit); ++ if (acl_type == ACL_TYPE_NFS4) { ++ /* ++ * acl_get_flagset_np() fails with non-NFSv4 ACLs ++ */ ++ if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to get flagset from an NFSv4 ACL entry"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ if (acl_clear_flags_np(acl_flagset) != 0) { ++ archive_set_error(a, errno, ++ "Failed to clear flags from an NFSv4 ACL flagset"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { ++ if (ae_permset & acl_inherit_map[i].archive_inherit) { ++ if (acl_add_flag_np(acl_flagset, ++ acl_inherit_map[i].platform_inherit) != 0) { ++ archive_set_error(a, errno, ++ "Failed to add flag to NFSv4 ACL flagset"); ++ ret = ARCHIVE_FAILED; ++ goto exit_free; ++ } ++ } ++ } + } + } + +@@ -243,6 +302,7 @@ + ret = ARCHIVE_WARN; + } + #endif ++exit_free: + acl_free(acl); + return (ret); + } +--- contrib/libarchive/libarchive/archive_write_disk_posix.c.orig ++++ contrib/libarchive/libarchive/archive_write_disk_posix.c +@@ -140,7 +140,17 @@ + #define O_BINARY 0 + #endif + #ifndef O_CLOEXEC +-#define O_CLOEXEC 0 ++#define O_CLOEXEC 0 ++#endif ++ ++/* Ignore non-int O_NOFOLLOW constant. */ ++/* gnulib's fcntl.h does this on AIX, but it seems practical everywhere */ ++#if defined O_NOFOLLOW && !(INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) ++#undef O_NOFOLLOW ++#endif ++ ++#ifndef O_NOFOLLOW ++#define O_NOFOLLOW 0 + #endif + + struct fixup_entry { +@@ -326,12 +336,14 @@ + + #define HFS_BLOCKS(s) ((s) >> 12) + ++static int check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); + static int check_symlinks(struct archive_write_disk *); + static int create_filesystem_object(struct archive_write_disk *); + static struct fixup_entry *current_fixup(struct archive_write_disk *, const char *pathname); + #if defined(HAVE_FCHDIR) && defined(PATH_MAX) + static void edit_deep_directories(struct archive_write_disk *ad); + #endif ++static int cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); + static int cleanup_pathname(struct archive_write_disk *); + static int create_dir(struct archive_write_disk *, char *); + static int create_parent_dir(struct archive_write_disk *, char *); +@@ -1791,7 +1803,7 @@ + char *tail = a->name; + + /* If path is short, avoid the open() below. */ +- if (strlen(tail) <= PATH_MAX) ++ if (strlen(tail) < PATH_MAX) + return; + + /* Try to record our starting dir. */ +@@ -1801,7 +1813,7 @@ + return; + + /* As long as the path is too long... */ +- while (strlen(tail) > PATH_MAX) { ++ while (strlen(tail) >= PATH_MAX) { + /* Locate a dir prefix shorter than PATH_MAX. */ + tail += PATH_MAX - 8; + while (tail > a->name && *tail != '/') +@@ -1996,6 +2008,10 @@ + const char *linkname; + mode_t final_mode, mode; + int r; ++ /* these for check_symlinks_fsobj */ ++ char *linkname_copy; /* non-const copy of linkname */ ++ struct archive_string error_string; ++ int error_number; + + /* We identify hard/symlinks according to the link names. */ + /* Since link(2) and symlink(2) don't handle modes, we're done here. */ +@@ -2004,6 +2020,27 @@ + #if !HAVE_LINK + return (EPERM); + #else ++ archive_string_init(&error_string); ++ linkname_copy = strdup(linkname); ++ if (linkname_copy == NULL) { ++ return (EPERM); ++ } ++ /* TODO: consider using the cleaned-up path as the link target? */ ++ r = cleanup_pathname_fsobj(linkname_copy, &error_number, &error_string, a->flags); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ free(linkname_copy); ++ /* EPERM is more appropriate than error_number for our callers */ ++ return (EPERM); ++ } ++ r = check_symlinks_fsobj(linkname_copy, &error_number, &error_string, a->flags); ++ if (r != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ free(linkname_copy); ++ /* EPERM is more appropriate than error_number for our callers */ ++ return (EPERM); ++ } ++ free(linkname_copy); + r = link(linkname, a->name) ? errno : 0; + /* + * New cpio and pax formats allow hardlink entries +@@ -2022,7 +2059,7 @@ + a->deferred = 0; + } else if (r == 0 && a->filesize > 0) { + a->fd = open(a->name, +- O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC); ++ O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC | O_NOFOLLOW); + __archive_ensure_cloexec_flag(a->fd); + if (a->fd < 0) + r = errno; +@@ -2332,110 +2369,233 @@ + return (a->current_fixup); + } + +-/* TODO: Make this work. */ +-/* +- * TODO: The deep-directory support bypasses this; disable deep directory +- * support if we're doing symlink checks. +- */ + /* + * TODO: Someday, integrate this with the deep dir support; they both + * scan the path and both can be optimized by comparing against other + * recent paths. + */ + /* TODO: Extend this to support symlinks on Windows Vista and later. */ ++ ++/* ++ * Checks the given path to see if any elements along it are symlinks. Returns ++ * ARCHIVE_OK if there are none, otherwise puts an error in errmsg. ++ */ + static int +-check_symlinks(struct archive_write_disk *a) ++check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) + { + #if !defined(HAVE_LSTAT) + /* Platform doesn't have lstat, so we can't look for symlinks. */ +- (void)a; /* UNUSED */ ++ (void)path; /* UNUSED */ ++ (void)error_number; /* UNUSED */ ++ (void)error_string; /* UNUSED */ ++ (void)flags; /* UNUSED */ + return (ARCHIVE_OK); + #else +- char *pn; ++ int res = ARCHIVE_OK; ++ char *tail; ++ char *head; ++ int last; + char c; + int r; + struct stat st; ++ int restore_pwd; ++ ++ /* Nothing to do here if name is empty */ ++ if(path[0] == '\0') ++ return (ARCHIVE_OK); + + /* + * Guard against symlink tricks. Reject any archive entry whose + * destination would be altered by a symlink. ++ * ++ * Walk the filename in chunks separated by '/'. For each segment: ++ * - if it doesn't exist, continue ++ * - if it's symlink, abort or remove it ++ * - if it's a directory and it's not the last chunk, cd into it ++ * As we go: ++ * head points to the current (relative) path ++ * tail points to the temporary \0 terminating the segment we're currently examining ++ * c holds what used to be in *tail ++ * last is 1 if this is the last tail ++ */ ++ restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC); ++ __archive_ensure_cloexec_flag(restore_pwd); ++ if (restore_pwd < 0) ++ return (ARCHIVE_FATAL); ++ head = path; ++ tail = path; ++ last = 0; ++ /* TODO: reintroduce a safe cache here? */ ++ /* Skip the root directory if the path is absolute. */ ++ if(tail == path && tail[0] == '/') ++ ++tail; ++ /* Keep going until we've checked the entire name. ++ * head, tail, path all alias the same string, which is ++ * temporarily zeroed at tail, so be careful restoring the ++ * stashed (c=tail[0]) for error messages. ++ * Exiting the loop with break is okay; continue is not. + */ +- /* Whatever we checked last time doesn't need to be re-checked. */ +- pn = a->name; +- if (archive_strlen(&(a->path_safe)) > 0) { +- char *p = a->path_safe.s; +- while ((*pn != '\0') && (*p == *pn)) +- ++p, ++pn; +- } +- c = pn[0]; +- /* Keep going until we've checked the entire name. */ +- while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) { ++ while (!last) { ++ /* Skip the separator we just consumed, plus any adjacent ones */ ++ while (*tail == '/') ++ ++tail; + /* Skip the next path element. */ +- while (*pn != '\0' && *pn != '/') +- ++pn; +- c = pn[0]; +- pn[0] = '\0'; ++ while (*tail != '\0' && *tail != '/') ++ ++tail; ++ /* is this the last path component? */ ++ last = (tail[0] == '\0') || (tail[0] == '/' && tail[1] == '\0'); ++ /* temporarily truncate the string here */ ++ c = tail[0]; ++ tail[0] = '\0'; + /* Check that we haven't hit a symlink. */ +- r = lstat(a->name, &st); ++ r = lstat(head, &st); + if (r != 0) { ++ tail[0] = c; + /* We've hit a dir that doesn't exist; stop now. */ +- if (errno == ENOENT) ++ if (errno == ENOENT) { + break; ++ } else { ++ /* Treat any other error as fatal - best to be paranoid here ++ * Note: This effectively disables deep directory ++ * support when security checks are enabled. ++ * Otherwise, very long pathnames that trigger ++ * an error here could evade the sandbox. ++ * TODO: We could do better, but it would probably ++ * require merging the symlink checks with the ++ * deep-directory editing. */ ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not stat %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; ++ } ++ } else if (S_ISDIR(st.st_mode)) { ++ if (!last) { ++ if (chdir(head) != 0) { ++ tail[0] = c; ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not chdir %s", ++ path); ++ res = (ARCHIVE_FATAL); ++ break; ++ } ++ /* Our view is now from inside this dir: */ ++ head = tail + 1; ++ } + } else if (S_ISLNK(st.st_mode)) { +- if (c == '\0') { ++ if (last) { + /* + * Last element is symlink; remove it + * so we can overwrite it with the + * item being extracted. + */ +- if (unlink(a->name)) { +- archive_set_error(&a->archive, errno, +- "Could not remove symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ if (unlink(head)) { ++ tail[0] = c; ++ if (error_number) *error_number = errno; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Could not remove symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } +- a->pst = NULL; + /* + * Even if we did remove it, a warning + * is in order. The warning is silly, + * though, if we're just replacing one + * symlink with another symlink. + */ +- if (!S_ISLNK(a->mode)) { +- archive_set_error(&a->archive, 0, +- "Removing symlink %s", +- a->name); ++ tail[0] = c; ++ /* FIXME: not sure how important this is to restore ++ if (!S_ISLNK(path)) { ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Removing symlink %s", ++ path); + } ++ */ + /* Symlink gone. No more problem! */ +- pn[0] = c; +- return (0); +- } else if (a->flags & ARCHIVE_EXTRACT_UNLINK) { ++ res = ARCHIVE_OK; ++ break; ++ } else if (flags & ARCHIVE_EXTRACT_UNLINK) { + /* User asked us to remove problems. */ +- if (unlink(a->name) != 0) { +- archive_set_error(&a->archive, 0, +- "Cannot remove intervening symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ if (unlink(head) != 0) { ++ tail[0] = c; ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Cannot remove intervening symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } +- a->pst = NULL; ++ tail[0] = c; + } else { +- archive_set_error(&a->archive, 0, +- "Cannot extract through symlink %s", +- a->name); +- pn[0] = c; +- return (ARCHIVE_FAILED); ++ tail[0] = c; ++ if (error_number) *error_number = 0; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Cannot extract through symlink %s", ++ path); ++ res = ARCHIVE_FAILED; ++ break; + } + } ++ /* be sure to always maintain this */ ++ tail[0] = c; ++ if (tail[0] != '\0') ++ tail++; /* Advance to the next segment. */ + } +- pn[0] = c; +- /* We've checked and/or cleaned the whole path, so remember it. */ +- archive_strcpy(&a->path_safe, a->name); +- return (ARCHIVE_OK); ++ /* Catches loop exits via break */ ++ tail[0] = c; ++#ifdef HAVE_FCHDIR ++ /* If we changed directory above, restore it here. */ ++ if (restore_pwd >= 0) { ++ r = fchdir(restore_pwd); ++ if (r != 0) { ++ if(error_number) *error_number = errno; ++ if(error_string) ++ archive_string_sprintf(error_string, ++ "chdir() failure"); ++ } ++ close(restore_pwd); ++ restore_pwd = -1; ++ if (r != 0) { ++ res = (ARCHIVE_FATAL); ++ } ++ } ++#endif ++ /* TODO: reintroduce a safe cache here? */ ++ return res; + #endif + } + ++/* ++ * Check a->name for symlinks, returning ARCHIVE_OK if its clean, otherwise ++ * calls archive_set_error and returns ARCHIVE_{FATAL,FAILED} ++ */ ++static int ++check_symlinks(struct archive_write_disk *a) ++{ ++ struct archive_string error_string; ++ int error_number; ++ int rc; ++ archive_string_init(&error_string); ++ rc = check_symlinks_fsobj(a->name, &error_number, &error_string, a->flags); ++ if (rc != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ } ++ archive_string_free(&error_string); ++ a->pst = NULL; /* to be safe */ ++ return rc; ++} ++ ++ + #if defined(__CYGWIN__) + /* + * 1. Convert a path separator from '\' to '/' . +@@ -2509,15 +2669,17 @@ + * is set) if the path is absolute. + */ + static int +-cleanup_pathname(struct archive_write_disk *a) ++cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) + { + char *dest, *src; + char separator = '\0'; + +- dest = src = a->name; ++ dest = src = path; + if (*src == '\0') { +- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, +- "Invalid empty pathname"); ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Invalid empty pathname"); + return (ARCHIVE_FAILED); + } + +@@ -2526,9 +2688,11 @@ + #endif + /* Skip leading '/'. */ + if (*src == '/') { +- if (a->flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) { +- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, +- "Path is absolute"); ++ if (flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) { ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Path is absolute"); + return (ARCHIVE_FAILED); + } + +@@ -2555,10 +2719,11 @@ + } else if (src[1] == '.') { + if (src[2] == '/' || src[2] == '\0') { + /* Conditionally warn about '..' */ +- if (a->flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) { +- archive_set_error(&a->archive, +- ARCHIVE_ERRNO_MISC, +- "Path contains '..'"); ++ if (flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) { ++ if (error_number) *error_number = ARCHIVE_ERRNO_MISC; ++ if (error_string) ++ archive_string_sprintf(error_string, ++ "Path contains '..'"); + return (ARCHIVE_FAILED); + } + } +@@ -2589,7 +2754,7 @@ + * We've just copied zero or more path elements, not including the + * final '/'. + */ +- if (dest == a->name) { ++ if (dest == path) { + /* + * Nothing got copied. The path must have been something + * like '.' or '/' or './' or '/././././/./'. +@@ -2604,6 +2769,21 @@ + return (ARCHIVE_OK); + } + ++static int ++cleanup_pathname(struct archive_write_disk *a) ++{ ++ struct archive_string error_string; ++ int error_number; ++ int rc; ++ archive_string_init(&error_string); ++ rc = cleanup_pathname_fsobj(a->name, &error_number, &error_string, a->flags); ++ if (rc != ARCHIVE_OK) { ++ archive_set_error(&a->archive, error_number, "%s", error_string.s); ++ } ++ archive_string_free(&error_string); ++ return rc; ++} ++ + /* + * Create the parent directory of the specified path, assuming path + * is already in mutable storage. +--- contrib/libarchive/libarchive/test/main.c.orig ++++ contrib/libarchive/libarchive/test/main.c +@@ -1396,6 +1396,31 @@ + return (0); + } + ++/* Verify mode of 'pathname'. */ ++int ++assertion_file_mode(const char *file, int line, const char *pathname, int expected_mode) ++{ ++ int mode; ++ int r; ++ ++ assertion_count(file, line); ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ failure_start(file, line, "assertFileMode not yet implemented for Windows"); ++#else ++ { ++ struct stat st; ++ r = lstat(pathname, &st); ++ mode = (int)(st.st_mode & 0777); ++ } ++ if (r == 0 && mode == expected_mode) ++ return (1); ++ failure_start(file, line, "File %s has mode %o, expected %o", ++ pathname, mode, expected_mode); ++#endif ++ failure_finish(NULL); ++ return (0); ++} ++ + /* Assert that 'pathname' is a dir. If mode >= 0, verify that too. */ + int + assertion_is_dir(const char *file, int line, const char *pathname, int mode) +--- contrib/libarchive/libarchive/test/test.h.orig ++++ contrib/libarchive/libarchive/test/test.h +@@ -176,6 +176,8 @@ + assertion_file_nlinks(__FILE__, __LINE__, pathname, nlinks) + #define assertFileSize(pathname, size) \ + assertion_file_size(__FILE__, __LINE__, pathname, size) ++#define assertFileMode(pathname, mode) \ ++ assertion_file_mode(__FILE__, __LINE__, pathname, mode) + #define assertTextFileContents(text, pathname) \ + assertion_text_file_contents(__FILE__, __LINE__, text, pathname) + #define assertFileContainsLinesAnyOrder(pathname, lines) \ +@@ -239,6 +241,7 @@ + int assertion_file_nlinks(const char *, int, const char *, int); + int assertion_file_not_exists(const char *, int, const char *); + int assertion_file_size(const char *, int, const char *, long); ++int assertion_file_mode(const char *, int, const char *, int); + int assertion_is_dir(const char *, int, const char *, int); + int assertion_is_hardlink(const char *, int, const char *, const char *); + int assertion_is_not_hardlink(const char *, int, const char *, const char *); +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure744.c +@@ -0,0 +1,95 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #744 describes a bug in the sandboxing code that ++ * causes very long pathnames to not get checked for symlinks. ++ */ ++ ++DEFINE_TEST(test_write_disk_secure744) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ size_t buff_size = 8192; ++ char *buff = malloc(buff_size); ++ char *p = buff; ++ int n = 0; ++ int t; ++ ++ assert(buff != NULL); ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ while (p + 500 < buff + buff_size) { ++ memset(p, 'x', 100); ++ p += 100; ++ p[0] = '\0'; ++ ++ buff[0] = ((n / 1000) % 10) + '0'; ++ buff[1] = ((n / 100) % 10)+ '0'; ++ buff[2] = ((n / 10) % 10)+ '0'; ++ buff[3] = ((n / 1) % 10)+ '0'; ++ buff[4] = '_'; ++ ++n; ++ ++ /* Create a symlink pointing to the testworkdir */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, buff); ++ archive_entry_set_mode(ae, S_IFREG | 0777); ++ archive_entry_copy_symlink(ae, testworkdir); ++ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ *p++ = '/'; ++ sprintf(p, "target%d", n); ++ ++ /* Try to create a file through the symlink, should fail. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, buff); ++ archive_entry_set_mode(ae, S_IFDIR | 0777); ++ ++ t = archive_write_header(a, ae); ++ archive_entry_free(ae); ++ failure("Attempt to create target%d via %d-character symlink should have failed", n, (int)strlen(buff)); ++ if(!assertEqualInt(ARCHIVE_FAILED, t)) { ++ break; ++ } ++ } ++ archive_free(a); ++ free(buff); ++#endif ++} +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure745.c +@@ -0,0 +1,79 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #745 describes a bug in the sandboxing code that ++ * allows one to use a symlink to edit the permissions on a file or ++ * directory outside of the sandbox. ++ */ ++ ++DEFINE_TEST(test_write_disk_secure745) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ /* The target dir: The one we're going to try to change permission on */ ++ assertMakeDir("target", 0700); ++ ++ /* The sandbox dir we're going to run inside of. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create a symlink pointing to the target directory */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "sym"); ++ archive_entry_set_mode(ae, AE_IFLNK | 0777); ++ archive_entry_copy_symlink(ae, "../target"); ++ assert(0 == archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Try to alter the target dir through the symlink; this should fail. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "sym"); ++ archive_entry_set_mode(ae, S_IFDIR | 0777); ++ assert(0 == archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Permission of target dir should not have changed. */ ++ assertFileMode("../target", 0700); ++ ++ assert(0 == archive_write_close(a)); ++ archive_write_free(a); ++#endif ++} +--- /dev/null ++++ contrib/libarchive/libarchive/test/test_write_disk_secure746.c +@@ -0,0 +1,129 @@ ++/*- ++ * Copyright (c) 2003-2007,2016 Tim Kientzle ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++#include "test.h" ++__FBSDID("$FreeBSD$"); ++ ++#define UMASK 022 ++ ++/* ++ * Github Issue #746 describes a problem in which hardlink targets are ++ * not adequately checked and can be used to modify entries outside of ++ * the sandbox. ++ */ ++ ++/* ++ * Verify that ARCHIVE_EXTRACT_SECURE_NODOTDOT disallows '..' in hardlink ++ * targets. ++ */ ++DEFINE_TEST(test_write_disk_secure746a) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* The target directory we're going to try to affect. */ ++ assertMakeDir("target", 0700); ++ assertMakeFile("target/foo", 0700, "unmodified"); ++ ++ /* The sandbox dir we're going to work within. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NODOTDOT); ++ ++ /* Attempt to hardlink to the target directory. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "bar"); ++ archive_entry_set_mode(ae, AE_IFREG | 0777); ++ archive_entry_set_size(ae, 8); ++ archive_entry_copy_hardlink(ae, "../target/foo"); ++ assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae)); ++ assertEqualInt(ARCHIVE_FATAL, archive_write_data(a, "modified", 8)); ++ archive_entry_free(ae); ++ ++ /* Verify that target file contents are unchanged. */ ++ assertTextFileContents("unmodified", "../target/foo"); ++#endif ++} ++ ++/* ++ * Verify that ARCHIVE_EXTRACT_SECURE_NOSYMLINK disallows symlinks in hardlink ++ * targets. ++ */ ++DEFINE_TEST(test_write_disk_secure746b) ++{ ++#if defined(_WIN32) && !defined(__CYGWIN__) ++ skipping("archive_write_disk security checks not supported on Windows"); ++#else ++ struct archive *a; ++ struct archive_entry *ae; ++ ++ /* Start with a known umask. */ ++ assertUmask(UMASK); ++ ++ /* The target directory we're going to try to affect. */ ++ assertMakeDir("target", 0700); ++ assertMakeFile("target/foo", 0700, "unmodified"); ++ ++ /* The sandbox dir we're going to work within. */ ++ assertMakeDir("sandbox", 0700); ++ assertChdir("sandbox"); ++ ++ /* Create an archive_write_disk object. */ ++ assert((a = archive_write_disk_new()) != NULL); ++ archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS); ++ ++ /* Create a symlink to the target directory. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "symlink"); ++ archive_entry_set_mode(ae, AE_IFLNK | 0777); ++ archive_entry_copy_symlink(ae, "../target"); ++ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); ++ archive_entry_free(ae); ++ ++ /* Attempt to hardlink to the target directory via the symlink. */ ++ assert((ae = archive_entry_new()) != NULL); ++ archive_entry_copy_pathname(ae, "bar"); ++ archive_entry_set_mode(ae, AE_IFREG | 0777); ++ archive_entry_set_size(ae, 8); ++ archive_entry_copy_hardlink(ae, "symlink/foo"); ++ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae)); ++ assertEqualIntA(a, ARCHIVE_FATAL, archive_write_data(a, "modified", 8)); ++ archive_entry_free(ae); ++ ++ /* Verify that target file contents are unchanged. */ ++ assertTextFileContents("unmodified", "../target/foo"); ++ ++ assertEqualIntA(a, ARCHIVE_FATAL, archive_write_close(a)); ++ archive_write_free(a); ++#endif ++} +--- lib/libarchive/tests/Makefile.orig ++++ lib/libarchive/tests/Makefile +@@ -177,6 +177,9 @@ + test_write_disk_no_hfs_compression.c \ + test_write_disk_perms.c \ + test_write_disk_secure.c \ ++ test_write_disk_secure744.c \ ++ test_write_disk_secure745.c \ ++ test_write_disk_secure746.c \ + test_write_disk_sparse.c \ + test_write_disk_symlink.c \ + test_write_disk_times.c \ Property changes on: head/share/security/patches/SA-16:31/libarchive-10.3.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/security/patches/SA-16:31/libarchive-10.3.patch.asc =================================================================== --- head/share/security/patches/SA-16:31/libarchive-10.3.patch.asc (nonexistent) +++ head/share/security/patches/SA-16:31/libarchive-10.3.patch.asc (revision 49477) @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.13 (FreeBSD) + +iQIcBAABCgAGBQJX+0PmAAoJEO1n7NZdz2rnnmUQAIqTh0iP7z9FW2QY6FuyTWQK +XNqLx5LaAdTfoJ3gFpQMvbms5yVr/aOPUTgRTwl1UctPNM68bdGslxFwj2aIs4u7 +I4/VPvbWdSURzjwik2cTXpwEqHMWymPbFqeDZ914AbjN3LCk3oyClrCQbetR+37g +GEfQtsMipZeUjOvQXTGvMFQTirRmMrrU+5gPwkbVWXdnE+7chridmN7oer4IarpA +IQY454+dbYkAwDK6+ZUwi3xFnF93fBuguxHwbiuH1Z9i+2pO4saWSjSJJ7pGeU3i +WaGKKnyBCO+fKPI40iv2YnDHiVlpK06g/GQIpzFEHo0FRAByJY1zLBx3+leUGLhk +fy4r3LobLrJANWr48AzoO4KUeRuuTmmvm1eWfTCTa4ODEJuos8BCLKiwsdWJuMPW +Z3LsDmaQxoGpxK+4SsCyANTBs0DHO+kzcTnsW4MgsmnLn0KAOaGP50z3FpqqE4ov +2fPq/qe1A+Wicto16hx5PZfvunroPputvoN8qoFujdYuOgGfRcgqEUxTT/zknZXz +3ncwMgCK1JA6ivvKW9XwDup6v3Z+fW1PpZB7qPZFhx/q+EJukOD5AyhJROOKKjtp +mOEnJf7my2c0H9uxDbXlPgfHZY4dS7BszRJq0istxdvcvl0ZEOTTJAD3hOnGXyYU +TCtBq+CcUEOG7+MLWqtZ +=km25 +-----END PGP SIGNATURE----- Property changes on: head/share/security/patches/SA-16:31/libarchive-10.3.patch.asc ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/share/xml/advisories.xml =================================================================== --- head/share/xml/advisories.xml (revision 49476) +++ head/share/xml/advisories.xml (revision 49477) @@ -1,4210 +1,4238 @@ $FreeBSD$ 2016 + 10 + + + 10 + + + FreeBSD-SA-16:31.libarchive + + + + FreeBSD-SA-16:30.portsnap + + + + FreeBSD-SA-16:29.bspatch + + + + FreeBSD-SA-16:28.bind + + + + FreeBSD-SA-16:27.openssl + + + + + 9 23 FreeBSD-SA-16:26.openssl 7 25 FreeBSD-SA-16:25.bspatch 6 4 FreeBSD-SA-16:24.ntp 5 31 FreeBSD-SA-16:23.libarchive FreeBSD-SA-16:22.libarchive FreeBSD-SA-16:21.43bsd FreeBSD-SA-16:20.linux 17 FreeBSD-SA-16:19.sendmsg FreeBSD-SA-16:18.atkbd 4 FreeBSD-SA-16:17.openssl 4 29 FreeBSD-SA-16:16.ntp 3 16 FreeBSD-SA-16:15.sysarch FreeBSD-SA-16:14.openssh 10 FreeBSD-SA-16:13.bind FreeBSD-SA-16:12.openssl 1 30 FreeBSD-SA-16:11.openssl 27 FreeBSD-SA-16:10.linux FreeBSD-SA-16:09.ntp FreeBSD-SA-16:08.bind 14 FreeBSD-SA-16:07.openssh FreeBSD-SA-16:06.bsnmpd FreeBSD-SA-16:05.tcp FreeBSD-SA-16:04.linux FreeBSD-SA-16:03.linux FreeBSD-SA-16:02.ntp FreeBSD-SA-16:01.sctp 2015 12 16 FreeBSD-SA-15:27.bind 6 FreeBSD-SA-15:26.openssl 10 26 FreeBSD-SA-15:25.ntp 9 29 FreeBSD-SA-15:24.rpcbind 2 FreeBSD-SA-15:23.bind 8 25 FreeBSD-SA-15:22.openssh FreeBSD-SA-15:21.amd64 18 FreeBSD-SA-15:20.expat 5 FreeBSD-SA-15:19.routed FreeBSD-SA-15:18.bsdpatch 7 28 FreeBSD-SA-15:17.bind FreeBSD-SA-15:16.openssh FreeBSD-SA-15:15.tcp FreeBSD-SA-15:14.bsdpatch 21 FreeBSD-SA-15:13.tcp 9 FreeBSD-SA-15:12.openssl 7 FreeBSD-SA-15:11.bind 6 12 FreeBSD-SA-15:10.openssl 4 7 FreeBSD-SA-15:09.ipv6 FreeBSD-SA-15:08.bsdinstall FreeBSD-SA-15:07.ntp 3 19 FreeBSD-SA-15:06.openssl 2 25 FreeBSD-SA-15:05.bind FreeBSD-SA-15:04.igmp 1 27 FreeBSD-SA-15:03.sctp FreeBSD-SA-15:02.kmem 14 FreeBSD-SA-15:01.openssl 2014 12 23 FreeBSD-SA-14:31.ntp 17 FreeBSD-SA-14:30.unbound 10 FreeBSD-SA-14:29.bind FreeBSD-SA-14:28.file FreeBSD-SA-14:27.stdio 11 04 FreeBSD-SA-14:26.ftp FreeBSD-SA-14:25.setlogin FreeBSD-SA-14:24.sshd 10 21 FreeBSD-SA-14:23.openssl FreeBSD-SA-14:22.namei FreeBSD-SA-14:21.routed FreeBSD-SA-14:20.rtsold 9 16 FreeBSD-SA-14:19.tcp 9 FreeBSD-SA-14:18.openssl 7 8 FreeBSD-SA-14:17.kmem 6 24 FreeBSD-SA-14:16.file FreeBSD-SA-14:15.iconv 5 FreeBSD-SA-14:14.openssl 3 FreeBSD-SA-14:13.pam FreeBSD-SA-14:12.ktrace FreeBSD-SA-14:11.sendmail 5 13 FreeBSD-SA-14:10.openssl 4 30 FreeBSD-SA-14:09.openssl FreeBSD-SA-14:08.tcp FreeBSD-SA-14:07.devfs 08 FreeBSD-SA-14:06.openssl FreeBSD-SA-14:05.nfsserver 1 14 FreeBSD-SA-14:04.bind FreeBSD-SA-14:03.openssl FreeBSD-SA-14:02.ntpd FreeBSD-SA-14:01.bsnmpd 2013 11 19 FreeBSD-SA-13:14.openssh 9 10 FreeBSD-SA-13:13.nullfs FreeBSD-SA-13:12.ifioctl FreeBSD-SA-13:11.sendfile 8 22 FreeBSD-SA-13:10.sctp FreeBSD-SA-13:09.ip_multicast 7 26 FreeBSD-SA-13:08.nfsserver FreeBSD-SA-13:07.bind 6 18 FreeBSD-SA-13:06.mmap 4 29 FreeBSD-SA-13:05.nfsserver 2 FreeBSD-SA-13:04.bind FreeBSD-SA-13:03.openssl 2 19 FreeBSD-SA-13:02.libc FreeBSD-SA-13:01.bind 2012 11 22 FreeBSD-SA-12:08.linux FreeBSD-SA-12:07.hostapd FreeBSD-SA-12:06.bind 8 6 FreeBSD-SA-12:05.bind 6 12 FreeBSD-SA-12:04.sysret FreeBSD-SA-12:03.bind 5 30 FreeBSD-SA-12:02.crypt 30 FreeBSD-SA-12:01.openssl 2011 12 23 FreeBSD-SA-11:10.pam FreeBSD-SA-11:09.pam_ssh FreeBSD-SA-11:08.telnetd FreeBSD-SA-11:07.chroot FreeBSD-SA-11:06.bind 9 28 FreeBSD-SA-11:05.unix FreeBSD-SA-11:04.compress FreeBSD-SA-11:03.bind 5 28 FreeBSD-SA-11:02.bind 4 20 FreeBSD-SA-11:01.mountd 2010 11 29 FreeBSD-SA-10:10.openssl 10 FreeBSD-SA-10:09.pseudofs 9 20 FreeBSD-SA-10:08.bzip2 7 13 FreeBSD-SA-10:07.mbuf 5 27 FreeBSD-SA-10:06.nfsclient FreeBSD-SA-10:05.opie FreeBSD-SA-10:04.jail 1 6 FreeBSD-SA-10:03.zfs FreeBSD-SA-10:02.ntpd FreeBSD-SA-10:01.bind 2009 12 3 FreeBSD-SA-09:17.freebsd-update FreeBSD-SA-09:16.rtld FreeBSD-SA-09:15.ssl 10 2 FreeBSD-SA-09:14.devfs FreeBSD-SA-09:13.pipe 7 29 FreeBSD-SA-09:12.bind 6 10 FreeBSD-SA-09:11.ntpd FreeBSD-SA-09:10.ipv6 FreeBSD-SA-09:09.pipe 4 22 FreeBSD-SA-09:08.openssl FreeBSD-SA-09:07.libc 3 23 FreeBSD-SA-09:06.ktimer 2 16 FreeBSD-SA-09:05.telnetd 1 13 FreeBSD-SA-09:04.bind FreeBSD-SA-09:03.ntpd 7 FreeBSD-SA-09:02.openssl FreeBSD-SA-09:01.lukemftpd 2008 12 23 FreeBSD-SA-08:13.protosw FreeBSD-SA-08:12.ftpd 11 24 FreeBSD-SA-08:11.arc4random 10 2 FreeBSD-SA-08:10.nd6 9 3 FreeBSD-SA-08:09.icmp6 FreeBSD-SA-08:08.nmount FreeBSD-SA-08:07.amd64 7 13 FreeBSD-SA-08:06.bind 4 17 FreeBSD-SA-08:05.openssh 2 14 FreeBSD-SA-08:04.ipsec FreeBSD-SA-08:03.sendfile 1 18 FreeBSD 6.3-RELEASE 14 FreeBSD-SA-08:02.libc FreeBSD-SA-08:01.pty 2007 11 29 FreeBSD-SA-07:10.gtar FreeBSD-SA-07:09.random 10 3 FreeBSD-SA-07:08.openssl 8 1 FreeBSD-SA-07:07.bind FreeBSD-SA-07:06.tcpdump 7 12 FreeBSD-SA-07:05.libarchive 5 23 FreeBSD-SA-07:04.file 4 26 FreeBSD-SA-07:03.ipv6 2 9 FreeBSD-SA-07:02.bind 1 15 FreeBSD 6.2-RELEASE 11 FreeBSD-SA-07:01.jail 2006 12 6 FreeBSD-SA-06:26.gtar FreeBSD-SA-06:25.kmem 11 8 FreeBSD-SA-06:24.libarchive 9 30 FreeBSD-SA-06:22.openssh 28 FreeBSD-SA-06:23.openssl 19 FreeBSD-SA-06:21.gzip 6 FreeBSD-SA-06:20.bind FreeBSD-SA-06:19.openssl 8 23 FreeBSD-SA-06:18.ppp 6 14 FreeBSD-SA-06:17.sendmail 5 31 FreeBSD-SA-06:16.smbfs FreeBSD-SA-06:15.ypserv 25 FreeBSD 5.5-RELEASE 9 FreeBSD 6.1-RELEASE 4 19 FreeBSD-SA-06:14.fpu 3 22 FreeBSD-SA-06:13.sendmail FreeBSD-SA-06:12.opie FreeBSD-SA-06:11.ipsec 1 FreeBSD-SA-06:10.nfs FreeBSD-SA-06:09.openssh 2 1 FreeBSD-SA-06:08.sack 1 25 FreeBSD-SA-06:07.pf FreeBSD-SA-06:06.kmem 18 FreeBSD-SA-06:05.80211 11 FreeBSD-SA-06:04.ipfw FreeBSD-SA-06:03.cpio FreeBSD-SA-06:02.ee FreeBSD-SA-06:01.texindex 2005 11 4 FreeBSD 6.0-RELEASE 10 11 FreeBSD-SA-05:21.openssl 9 7 FreeBSD-SA-05:20.cvsbug 7 27 FreeBSD-SA-05:19.ipsec FreeBSD-SA-05:18.zlib 20 FreeBSD-SA-05:17.devfs 6 FreeBSD-SA-05:16.zlib 6 29 FreeBSD-SA-05:15.tcp FreeBSD-SA-05:14.bzip2 FreeBSD-SA-05:13.ipfw 9 FreeBSD-SA-05:12.bind9 FreeBSD-SA-05:11.gzip FreeBSD-SA-05:10.tcpdump 5 13 FreeBSD-SA-05:09.htt 9 FreeBSD 5.4-RELEASE 6 FreeBSD-SA-05:08.kmem FreeBSD-SA-05:07.ldt FreeBSD-SA-05:06.iir 4 22 FreeBSD-SA-05:05.cvs 15 FreeBSD-SA-05:04.ifconf 6 FreeBSD-SA-05:03.amd64 4 FreeBSD-SA-05:02.sendfile 3 28 FreeBSD-SA-05:01.telnet 1 25 FreeBSD 4.11-RELEASE 2004 12 1 FreeBSD-SA-04:17.procfs 11 18 FreeBSD-SA-04:16.fetch 6 FreeBSD 5.3-RELEASE 10 4 FreeBSD-SA-04:15.syscons 9 19 FreeBSD-SA-04:14.cvs 6 30 FreeBSD-SA-04:13.linux 7 FreeBSD-SA-04:12.jailroute 5 27 FreeBSD 4.10-RELEASE 19 FreeBSD-SA-04:11.msync 19 FreeBSD-SA-04:10.cvs 5 FreeBSD-SA-04:09.kadmind FreeBSD-SA-04:08.heimdal 4 15 FreeBSD-SA-04:07.cvs 3 29 FreeBSD-SA-04:06.ipv6 17 FreeBSD-SA-04:05.openssl 2 FreeBSD-SA-04:04.tcp 2 26 FreeBSD 5.2.1-RELEASE 25 FreeBSD-SA-04:03.jail 05 FreeBSD-SA-04:02.shmat 1 30 FreeBSD-SA-04:01.mksnap_ffs 12 FreeBSD 5.2-RELEASE 2003 11 28 FreeBSD-SA-03:19.bind 10 27 FreeBSD 4.9-RELEASE 5 FreeBSD-SA-03:15.openssh 3 FreeBSD-SA-03:18.openssl FreeBSD-SA-03:17.procfs 2 FreeBSD-SA-03:16.filedesc 9 23 FreeBSD-SA-03:14.arp 17 FreeBSD-SA-03:13.sendmail 16 FreeBSD-SA-03:12.openssh 8 26 FreeBSD-SA-03:11.sendmail http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1170 10 FreeBSD-SA-03:10.ibcs2 http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1164 FreeBSD-SA-03:09.signal http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1163 3 FreeBSD-SA-03:08.realpath http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1158 6 9 FreeBSD 5.1-RELEASE 4 8 FreeBSD-SN-03:02 7 FreeBSD-SN-03:01 3 FreeBSD 4.8-RELEASE 3 30 FreeBSD-SA-03:07.sendmail http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1122 21 FreeBSD-SA-03:06.openssl http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1118 20 FreeBSD-SA-03:05.xdr http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1117 3 FreeBSD-SA-03:04.sendmail http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1112 2 24 FreeBSD-SA-03:03.syncookies http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1106 FreeBSD-SA-03:02.openssl http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1105 04 FreeBSD-SA-03:01.cvs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1100 1 19 FreeBSD 5.0-RELEASE 07 FreeBSD-SA-02:44.filedesc http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1090 2002 11 15 FreeBSD-SA-02:43.bind http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1084 FreeBSD-SA-02:41.smrsh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1082 12 FreeBSD-SA-02:42.resolv http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1083 FreeBSD-SA-02:40.kadmind http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1081 10 10 FreeBSD 4.7-RELEASE FreeBSD-SN-02:06 9 16 FreeBSD-SA-02:39.libkvm http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1051 8 28 FreeBSD-SN-02:05 19 FreeBSD-SA-02:38.signed-error http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1041 15 FreeBSD 4.6.2-RELEASE 05 FreeBSD-SA-02:37.kqueue http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1033 FreeBSD-SA-02:36.nfs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1032 FreeBSD-SA-02:35.ffs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1031 FreeBSD-SA-02:33.openssl http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1023 01 FreeBSD-SA-02:34.rpc http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1024 7 31 FreeBSD-SA-02:32.pppd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1022 15 FreeBSD-SA-02:31.openssh 12 FreeBSD-SA-02:30.ktrace FreeBSD-SA-02:29.tcpdump 6 26 FreeBSD-SA-02:28.resolv 19 FreeBSD-SN-02:04 15 FreeBSD 4.6-RELEASE 5 29 FreeBSD-SA-02:27.rc FreeBSD-SA-02:26.accept 28 FreeBSD-SN-02:03 20 FreeBSD-SA-02:25.bzip2 FreeBSD-SA-02:24.k5su 13 FreeBSD-SN-02:02 4 22 FreeBSD-SA-02:23.stdio http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/1021 18 FreeBSD-SA-02:22.mmap 17 FreeBSD-SA-02:21.tcpip http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/980 16 FreeBSD-SA-02:20.syncache http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/979 3 30 FreeBSD-SN-02:01 26 FreeBSD-SA-02:19.squid http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/960 18 FreeBSD-SA-02:18.zlib http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/978 12 FreeBSD-SA-02:17.mod_frontpage http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/954 FreeBSD-SA-02:16.netscape http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/953 FreeBSD-SA-02:15.cyrus-sasl http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/952 FreeBSD-SA-02:14.pam-pgsql http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/951 07 FreeBSD-SA-02:13.openssh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/945 2 21 FreeBSD-SA-02:12.squid http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/938 12 FreeBSD-SA-02:11.snmp http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/936 06 FreeBSD-SA-02:10.rsync http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/928 FreeBSD-SA-02:09.fstatfs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/927 1 29 FreeBSD 4.5-RELEASE 24 FreeBSD-SA-02:08.exec http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/923 18 FreeBSD-SA-02:07.k5su http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/912 16 FreeBSD-SA-02:06.sudo http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/909 04 FreeBSD-SA-02:05.pine http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/894 FreeBSD-SA-02:04.mutt http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/893 FreeBSD-SA-02:03.mod_auth_pgsql http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/892 FreeBSD-SA-02:02.pw http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/891 FreeBSD-SA-02:01.pkg_add http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/898 2001 12 04 FreeBSD-SA-01:64.wu-ftpd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/870 02 FreeBSD-SA-01:63.openssh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/871 10 08 FreeBSD-SA-01:62.uucp FreeBSD-SA-01:61.squid 9 24 FreeBSD-SA-01:60.procmail 20 FreeBSD 4.4-RELEASE 04 FreeBSD-SA-01:59.rmuser 8 30 FreeBSD-SA-01:58.lpd 27 FreeBSD-SA-01:57.sendmail 23 FreeBSD-SA-01:56.tcp_wrappers 21 FreeBSD-SA-01:55.procfs 20 FreeBSD-SA-01:54.ports-telnetd 17 FreeBSD-SA-01:53.ipfw 06 FreeBSD-SA-01:52.fragment 7 30 FreeBSD-SA-01:51.openssl 27 FreeBSD-SA-01:50.windowmaker 23 FreeBSD-SA-01:49.telnetd 17 FreeBSD-SA-01:48.tcpdump 10 FreeBSD-SA-01:47.xinetd FreeBSD-SA-01:46.w3m FreeBSD-SA-01:45.samba FreeBSD-SA-01:44.gnupg FreeBSD-SA-01:43.fetchmail FreeBSD-SA-01:42.signal 09 FreeBSD-SA-01:41.hanterm 6 04 FreeBSD-SA-01:40.fts 5 02 FreeBSD-SA-01:39.tcp-isn 4 23 FreeBSD-SA-01:38.sudo FreeBSD-SA-01:37.slrn FreeBSD-SA-01:36.samba FreeBSD-SA-01:35.licq FreeBSD-SA-01:34.hylafax 20 FreeBSD 4.3-RELEASE 17 FreeBSD-SA-01:33.ftpd-glob 16 FreeBSD-SA-01:32.ipfilter 06 FreeBSD-SA-01:31.ntpd 3 22 FreeBSD-SA-01:30.ufs-ext2fs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/738 12 FreeBSD-SA-01:29.rwhod http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/732 FreeBSD-SA-01:28.timed http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/731 FreeBSD-SA-01:27.cfengine http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/730 FreeBSD-SA-01:26.interbase http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/729 FreeBSD-SA-01:23.icecast http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/728 2 14 FreeBSD-SA-01:25.kerberosIV http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/716 12 FreeBSD-SA-01:24.ssh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/715 07 FreeBSD-SA-01:22.dc20ctrl http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/714 FreeBSD-SA-01:21.ja-elvis http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/713 FreeBSD-SA-01:20.mars_nwe http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/712 FreeBSD-SA-01:19.ja-klock http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/707 1 31 FreeBSD-SA-01:18.bind http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/706 29 FreeBSD-SA-01:17.exmh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/705 FreeBSD-SA-01:16.mysql http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/704 FreeBSD-SA-01:15.tinyproxy http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/703 FreeBSD-SA-01:14.micq http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/702 FreeBSD-SA-01:13.sort http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/701 FreeBSD-SA-01:12.periodic http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/700 FreeBSD-SA-01:11.inetd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/699 23 FreeBSD-SA-01:10.bind http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/698 FreeBSD-SA-01:09.crontab http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/697 FreeBSD-SA-01:08.ipfw http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/696 FreeBSD-SA-01:07.xfree86 15 FreeBSD-SA-01:06.zope http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/669 FreeBSD-SA-01:05.stunnel http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/668 FreeBSD-SA-01:04.joe http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/667 FreeBSD-SA-01:03.bash1 http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/666 FreeBSD-SA-01:02.syslog-ng http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/665 FreeBSD-SA-01:01.openssh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/664 2000 12 20 FreeBSD-SA-00:81.ethereal http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/651 FreeBSD-SA-00:80.halflifeserver http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/650 FreeBSD-SA-00:79.oops http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/649 FreeBSD-SA-00:78.bitchx http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/648 18 FreeBSD-SA-00:77.procfs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/647 11 20 FreeBSD-SA-00:76.tcsh-csh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/628 FreeBSD-SA-00:75.php http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/627 FreeBSD-SA-00:74.gaim FreeBSD-SA-00:73.thttpd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/626 FreeBSD-SA-00:72.curl http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/625 FreeBSD-SA-00:71.mgetty http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/624 14 FreeBSD-SA-00:70.ppp-nat http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/623 FreeBSD-SA-00:69.telnetd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/622 13 FreeBSD-SA-00:68.ncurses http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/621 10 FreeBSD-SA-00:67.gnupg http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/620 06 FreeBSD-SA-00:66.netscape http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/619 FreeBSD-SA-00:65.xfce http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/618 FreeBSD-SA-00:64.global http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/617 01 FreeBSD-SA-00:63.getnameinfo http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/589 FreeBSD-SA-00:62.top http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/616 10 31 FreeBSD-SA-00:61.tcpdump http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/615 30 FreeBSD-SA-00:60.boa http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/586 FreeBSD-SA-00:59.pine http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/585 FreeBSD-SA-00:58.chpass http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/584 13 FreeBSD-SA-00:57.muh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/570 FreeBSD-SA-00:56.lprng http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/569 FreeBSD-SA-00:55.xpdf http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/568 FreeBSD-SA-00:54.fingerd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/567 06 FreeBSD-SA-00:52.tcp-iss http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/561 9 27 FreeBSD-SA-00:53.catopen http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/562 13 FreeBSD-SA-00:51.mailman http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/550 FreeBSD-SA-00:50.listmanager http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/549 FreeBSD-SA-00:49.eject http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/548 FreeBSD-SA-00:48.xchat http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/547 FreeBSD-SA-00:47.pine http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/546 FreeBSD-SA-00:46.screen http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/545 8 31 FreeBSD-SA-00:45.esound http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/526 28 FreeBSD-SA-00:44.xlock http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/523 FreeBSD-SA-00:43.brouted http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/520 FreeBSD-SA-00:42.linux http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/530 FreeBSD-SA-00:41.elf http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/527 FreeBSD-SA-00:40.mopd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/521 FreeBSD-SA-00:39.netscape http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/528 14 FreeBSD-SA-00:38.zope http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/525 FreeBSD-SA-00:37.cvsweb http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/524 FreeBSD-SA-00:36.ntop http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/531 FreeBSD-SA-00:35.proftpd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/522 FreeBSD-SA-00:34.dhclient http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/529 7 12 FreeBSD-SA-00:33.kerberosIV http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/488 05 FreeBSD-SA-00:32.bitchx http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/487 FreeBSD-SA-00:31.canna http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/486 FreeBSD-SA-00:30.openssh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/485 FreeBSD-SA-00:29.wu-ftpd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/489 FreeBSD-SA-00:28.majordomo http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/484 FreeBSD-SA-00:27.XFree86-4 http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/483 FreeBSD-SA-00:26.popper http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/482 FreeBSD-SA-00:24.libedit http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/481 6 19 FreeBSD-SA-00:23.ip-options http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/480 12 FreeBSD-SA-00:25.alpha-random http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/473 07 FreeBSD-SA-00:22.apsfilter http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/461 FreeBSD-SA-00:21.ssh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/459 5 26 FreeBSD-SA-00:20.krb5 http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/452 23 FreeBSD-SA-00:19.semconfig http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/451 09 FreeBSD-SA-00:18.gnapster.knapster http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/429 FreeBSD-SA-00:17.libmytinfo http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/442 FreeBSD-SA-00:16.golddig http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/439 4 24 FreeBSD-SA-00:15.imap-uw http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/438 FreeBSD-SA-00:14.imap-uw http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/441 19 FreeBSD-SA-00:13.generic-nqs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/437 10 FreeBSD-SA-00:12.healthd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/436 FreeBSD-SA-00:11.ircii http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/440 3 15 FreeBSD-SA-00:10.orville-write http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/408 FreeBSD-SA-00:09.mtr http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/408 FreeBSD-SA-00:08.lynx http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/407 FreeBSD-SA-00:07.mh http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/411 01 FreeBSD-SA-00:06.htdig http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/403 2 28 FreeBSD-SA-00:05.mysql http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/402 19 FreeBSD-SA-00:04.delegate http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/392 FreeBSD-SA-00:03.asmon http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/391 1 24 FreeBSD-SA-00:02.procfs http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/380 19 FreeBSD-SA-00:01.make 1999 9 16 FreeBSD-SA-99:06.amd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/318 15 FreeBSD-SA-99:05.fts http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/313 FreeBSD-SA-99:04.core http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/312 05 FreeBSD-SA-99:03.ftpd http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/311 04 FreeBSD-SA-99:02.profil FreeBSD-SA-99:01.chflags 1998 11 04 FreeBSD-SA-98:08.fragment 10 13 FreeBSD-SA-98:07.rst 6 10 FreeBSD-SA-98:06.icmp 04 FreeBSD-SA-98:05.nfs 02 FreeBSD-SA-98:04.mmap 5 14 FreeBSD-SA-98:03.ttcp 3 12 FreeBSD-SA-98:02.mmap 1997 12 09 FreeBSD-SA-97:06.f00f 01 FreeBSD-SA-98:01.land 10 29 FreeBSD-SA-97:05.open 8 19 FreeBSD-SA-97:04.procfs 4 07 FreeBSD-SA-97:03.sysinstall 3 26 FreeBSD-SA-97:02.lpd 2 05 FreeBSD-SA-97:01.setlocale 1 18 FreeBSD-SA-96:21.talkd 1996 12 16 FreeBSD-SA-96:20.stack-overflow 10 FreeBSD-SA-96:19.modstat 11 25 FreeBSD-SA-96:18.lpr 7 16 FreeBSD-SA-96:17.rzsz 12 FreeBSD-SA-96:16.rdist 04 FreeBSD-SA-96:15.ppp 6 28 FreeBSD-SA-96:12.perl 24 FreeBSD-SA-96:14.ipfw 05 FreeBSD-SA-96:13.comsat 5 21 FreeBSD-SA-96:11.man 17 FreeBSD-SA-96:10.mount_union FreeBSD-SA-96:09.vfsload 4 22 FreeBSD-SA-96:02.apache 21 FreeBSD-SA-96:08.syslog FreeBSD-SA-96:01.sliplogin 20 FreeBSD-SA-96:03.sendmail-suggestion