svn commit: r47415 - in head/share: security/advisories security/patches/EN-15:16 security/patches/EN-15:17 security/patches/EN-15:18 xml
Xin LI
delphij at FreeBSD.org
Wed Sep 16 21:14:19 UTC 2015
Author: delphij
Date: Wed Sep 16 21:14:16 2015
New Revision: 47415
URL: https://svnweb.freebsd.org/changeset/doc/47415
Log:
Add EN-15:16 - EN-15:18.
Added:
head/share/security/advisories/FreeBSD-EN-15:16.pw.asc (contents, props changed)
head/share/security/advisories/FreeBSD-EN-15:17.libc.asc (contents, props changed)
head/share/security/advisories/FreeBSD-EN-15:18.pkg.asc (contents, props changed)
head/share/security/patches/EN-15:16/
head/share/security/patches/EN-15:16/pw.patch (contents, props changed)
head/share/security/patches/EN-15:16/pw.patch.asc (contents, props changed)
head/share/security/patches/EN-15:17/
head/share/security/patches/EN-15:17/libc.patch (contents, props changed)
head/share/security/patches/EN-15:17/libc.patch.asc (contents, props changed)
head/share/security/patches/EN-15:18/
head/share/security/patches/EN-15:18/pkg-10.patch (contents, props changed)
head/share/security/patches/EN-15:18/pkg-10.patch.asc (contents, props changed)
head/share/security/patches/EN-15:18/pkg-9.patch (contents, props changed)
head/share/security/patches/EN-15:18/pkg-9.patch.asc (contents, props changed)
Modified:
head/share/xml/notices.xml
Added: head/share/security/advisories/FreeBSD-EN-15:16.pw.asc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-EN-15:16.pw.asc Wed Sep 16 21:14:16 2015 (r47415)
@@ -0,0 +1,125 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-15:16.pw Errata Notice
+ The FreeBSD Project
+
+Topic: Regression in pw(8) when creating numeric users or groups
+
+Category: core
+Module: pw
+Announced: 2015-09-16
+Credits: Thierry Caillet, Baptiste Daroussin
+Affects: 10.2-RELEASE
+Corrected: 2015-08-23 21:42:27 UTC (stable/10, 10.2-STABLE)
+ 2015-09-16 20:59:41 UTC (releng/10.2, 10.2-RELEASE-p3)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:https://security.freebsd.org/>.
+
+I. Background
+
+The pw(8) utility is used to create, remove, modify, and display system
+users and groups.
+
+II. Problem Description
+
+The pw(8) utility will fail to create users and groups that only contain
+numeric values [0-9].
+
+III. Impact
+
+An attempt to create a user or group containing only numeric values will
+fail.
+
+IV. Workaround
+
+No workaround is available, but systems configured to create users or groups
+that do not contain numeric-only names are not affected.
+
+V. Solution
+
+Perform one of the following:
+
+1) Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.
+
+2) To update your present system via a 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
+
+3) To update your present system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch https://security.FreeBSD.org/patches/EN-15:26/pw.patch
+# fetch https://security.FreeBSD.org/patches/EN-15:26/pw.patch.asc
+# gpg --verify pw.patch.asc
+
+b) Apply the patch. Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+A reboot of the running system is not necessary after installing the updated
+pw(8) utility.
+
+VI. Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path Revision
+- -------------------------------------------------------------------------
+stable/10/ r287084
+releng/10.2/ r287872
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<other info on vulnerability>
+
+The latest revision of this Errata Notice is available at
+https://security.FreeBSD.org/advisories/FreeBSD-EN-15:26.pw.asc
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.1.8 (FreeBSD)
+
+iQIcBAEBCgAGBQJV+dpkAAoJEO1n7NZdz2rndhEQAKKeeQnj+Woggr6L1x8R3uTt
+q7ljwpAq2v3bMRQwMg/F3DOivcFAw9fn63u/siZLnZj0oqCCns0UT8ResHL6wMlD
+dVYav/npB/XeJTpqF6kuLKelqrzL+/YnU2lVe7SBQQibdszrn3sZSdeyF/XQrSOg
+Fqpa+xAP4/ZrSQviuyLe1AM1UI4RXVGssxmHO16zQTO+fp3cPmwP/wZ/Dlk/jnwa
+GugIuf/Vc7lzyDCtbOifRLLmiRo3IVoR7temMHEaBsTPClVzb+OHOdiD3aVYL6Vy
+Mp4oFBC7txmfIjDfmZ11EX4OBnCLpx3JEOAMTya0Mvo5PMLoymhu0RoWUyNXX4s7
+ThEjCaUWfEOYIDbP54ZCOrIooCvnjQFcs5MWys6tYO6iOOW96FUu4cV0ez8u+ukS
+Zz1b/TGEgks+/74mMgDO3z1FhGbJeRVFmQUUd+/ZboLIYhTOmop/puHLMpnSV0hY
+C0GSwhUtMD/E3a9AmyMoo9Wj1TySlxAmjb0kHPh0IpY0xPHmfXSJ17+LpGPeEHEj
+LLFRTHBiA/Qs/WJCSMy6XhztRJ2WPomqefhUtrh1mzzeJgQPX2yWRizvTboD0zAA
+yb4U22iuu1gkA7vEaOAW5RFGEKg3cGmHSqB/r0gZ20zazv0//l0Q8Sm0slP53kDs
+K+wCT8FF22Fgy0ZPw831
+=m4lo
+-----END PGP SIGNATURE-----
Added: head/share/security/advisories/FreeBSD-EN-15:17.libc.asc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-EN-15:17.libc.asc Wed Sep 16 21:14:16 2015 (r47415)
@@ -0,0 +1,129 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-15:17.libc Errata Notice
+ The FreeBSD Project
+
+Topic: libc incorrectly handles signals for multi-threaded processes
+
+Category: core
+Module: libc
+Announced: 2015-09-16
+Credits: Konstantin Belousov
+Affects: FreeBSD 10.2
+Corrected: 2015-09-05 08:55:51 UTC (stable/10, 10.2-STABLE)
+ 2015-09-16 20:59:41 UTC (releng/10.2, 10.2-RELEASE-p3)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:https://security.freebsd.org/>.
+
+I. Background
+
+The FreeBSD libc library is the core C runtime library which implements
+the ANSI C, POSIX APIs and BSD extensions for applications on top of the
+FreeBSD kernel. The internal operations of libc change when the threading
+library is loaded, ensuring service implementations are operational in
+multi-threaded environments, while avoiding unnecessary overhead for
+applications not utilizing threads. The implementation of some services
+is delegated to the threading library, for instance, the signal management.
+
+II. Problem Description
+
+Signal-related services, such as signal(3), sigprocmask(2), and sigwait(2)
+are not properly redirected to the threading library implementation when
+used by libc directly.
+
+III. Impact
+
+The full impact of the bug is difficult to enumerate precisely based on the
+nature of the problem, though some visible effects include runtime linker
+hang during signal delivery, and delivery of a signal to the application
+at an unexpected time.
+
+IV. Workaround
+
+No workaround is available.
+
+V. Solution
+
+Perform one of the following:
+
+1) Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.
+
+2) To update your present system via a 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
+
+3) To update your present system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch https://security.FreeBSD.org/patches/EN-15:17/libc.patch
+# fetch https://security.FreeBSD.org/patches/EN-15:17/libc.patch.asc
+# gpg --verify libc.patch.asc
+
+b) Apply the patch. Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+Reboot the system.
+
+VI. Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path Revision
+- -------------------------------------------------------------------------
+stable/10/ r287480
+releng/10.2/ r287872
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+The latest revision of this Errata Notice is available at
+https://security.FreeBSD.org/advisories/FreeBSD-EN-15:17.libc.asc
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.1.8 (FreeBSD)
+
+iQIcBAEBCgAGBQJV+dppAAoJEO1n7NZdz2rnKb8P/1D1VyY3WoenCbDAx/diaqpf
+yFV5ncQBF2yQ+ADJ9WcGVmVqx4AjP56a2PGZ0YaEG/wUbqrfdzABfA+phr+tIm65
+7QaNcPFSnvtGUH28hXkGT4sf4tpb2H/dD3eGTz4a8Fp8KbDcnYyg0kvOlBo1m7l7
+kfPt0fBH9yn5nf36mI6hD7SsajLnh92pvHG0tIlojDDU34zgrqA408BV7nWM8tvf
+jZxS7dLm0ZXUnlwXohwuESqT+GTsANjIv8pldWLxBAN+0qJ6+ZMvhgknkN9pu42D
+Zi/Hb/C/g6HmeglXbHvAbFzdLLfcduY3B469CuPPYwm7qVmkJvsbsyj+Tq/OtswX
+r50fFALF3LcRVzuRwRXDUciXufw0AdBNMCykl0kfai2r2R1CHvtfGC2bLyZoRk21
+1Kr/uh/eMqBs6OyW14ASfB6jOtjInYnVMYyjNeo75qUYOj7z5ybieNfM5X1kNfs1
+7Qckinr0bW9o2MMAj4bewJ6KkLlN1YAQqa3lx4JipFz/jut/9L1XWzsJMYNT7N7J
+G/qOBGjoH1lF56VvtngOVYTOdsxdZfu0s8KweH8SyzZHsnf7jHeHinp/ECo36hR6
++xQQO01w97xQLlKx5P0uODQb3aXMpfS3SjmSbGuAu60bXw74oMBeLlkSXR3t5DT+
+nw53+Y2BwV4yWz//iacR
+=lA5q
+-----END PGP SIGNATURE-----
Added: head/share/security/advisories/FreeBSD-EN-15:18.pkg.asc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-EN-15:18.pkg.asc Wed Sep 16 21:14:16 2015 (r47415)
@@ -0,0 +1,137 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-15:18.pkg Errata Notice
+ The FreeBSD Project
+
+Topic: Implement pubkey support for pkg(7) bootstrap
+
+Category: core
+Module: pkg
+Announced: 2015-09-16
+Credits: Baptiste Daroussin
+Affects: All supported versions of FreeBSD.
+Corrected: 2015-09-15 05:56:16 UTC (stable/10, 10.2-STABLE)
+ 2015-09-16 20:59:41 UTC (releng/10.2, 10.2-RELEASE-p3)
+ 2015-09-16 21:00:21 UTC (releng/10.1, 10.1-RELEASE-p20)
+ 2015-09-15 08:34:32 UTC (stable/9, 9.3-STABLE)
+ 2015-09-16 21:00:21 UTC (releng/9.3, 9.3-RELEASE-p26)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:https://security.freebsd.org/>.
+
+I. Background
+
+The pkg(8) utility is the package management tool for FreeBSD. The base
+system includes a pkg(7) bootstrap utility used to install the latest
+pkg(8) utility.
+
+II. Problem Description
+
+The pubkey method is not supported by the pkg(7) bootstrap utility.
+Previously, before EN-15:15.pkg, if the system administrator requested
+this method, it is silently ignored and no check is performed.
+
+In EN-15:15.pkg, pkg(7) have been modified to issue warning and refuse
+to proceed any further.
+
+III. Impact
+
+There is no way to use the pubkey method to bootstrap pkg(8) on the
+system.
+
+IV. Workaround
+
+No workaround is available, but the default FreeBSD configuration is not
+affected because it uses "fingerprint" method.
+
+V. Solution
+
+Perform one of the following:
+
+1) Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.
+
+2) To update your present system via a 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
+
+3) To update your present system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+[FreeBSD 10.x]
+# fetch https://security.FreeBSD.org/patches/EN-15:18/pkg-10.patch
+# fetch https://security.FreeBSD.org/patches/EN-15:18/pkg-10.patch.asc
+# gpg --verify pkg-10.patch.asc
+
+[FreeBSD 9.3]
+# fetch https://security.FreeBSD.org/patches/EN-15:18/pkg-9.patch
+# fetch https://security.FreeBSD.org/patches/EN-15:18/pkg-9.patch.asc
+# gpg --verify pkg-9.patch.asc
+
+b) Apply the patch. Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+VI. Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path Revision
+- -------------------------------------------------------------------------
+stable/9/ r287814
+releng/9.3/ r287873
+stable/10/ r287810
+releng/10.1/ r287873
+releng/10.2/ r287872
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+The latest revision of this Errata Notice is available at
+https://security.FreeBSD.org/advisories/FreeBSD-EN-15:18.pkg.asc
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.1.8 (FreeBSD)
+
+iQIcBAEBCgAGBQJV+dppAAoJEO1n7NZdz2rn9cUP/0CWVv/p9UJb53HzTjFJTmm3
+WS0eDqvGS9DS9G/QWsYUWqDQY+Sf9kIFpSQFjIxNbhGlxxRyYaU7hrn2fqbxdJvk
+wOlr+7Enui5d9dFLSYKuMfxY5dlyX+Y9WshdH5WI1I4jYrsEPrLc+YeJ7aaQ2QmP
+GbXHl21SenB32GxLh1/THuWPYRaMuOujbpO3DCbbTsxFfdgytUO3cbefvuKn4gfe
+Ol8yDUS9emD5mmD55uSuIvbOgywWFqpYGBcnAIwB5oRRKgJitbeZbXjOjyxCTVvT
+B3lBdPP6RIWnrMpBiQ9NPVWpYvk5jHnhUOfVDmVFIpG6UzRqqbLQVn4m2QoHmaxe
+eHNMuRT/Zpf5QIPZBpdVITz647V1M/gEb5GRnQ1B2JA0KXAxCsnt6qHPoG8JsrRW
+6G90QHjHqGLFtssGIILeCTRHJHYzjCxlRVWF8LgUgshQBbxpUmde6VedahdwKFel
+JG34M4Qxr9PIQ9u7UN4+bolxXtRSsUiKDtakYQs/NrnF48OZJSY98e4QG4tRsxvy
+cWcSsjkFbqzn/Z14KFb8zfygJCGdvOEOjl0Is44w+y9R8dddcwoFW3ufvsJi9KMc
+jQ622C+jZHa+fdUED4qJU9HDMEMDcMFH6Ule4JYwegBSq463keFX/gRoDvQK/eTS
+9KWvZ0KR3azq26fp7Ni4
+=ru1t
+-----END PGP SIGNATURE-----
Added: head/share/security/patches/EN-15:16/pw.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/security/patches/EN-15:16/pw.patch Wed Sep 16 21:14:16 2015 (r47415)
@@ -0,0 +1,20 @@
+Index: usr.sbin/pw/pw.c
+===================================================================
+--- usr.sbin/pw/pw.c (revision 287410)
++++ usr.sbin/pw/pw.c (working copy)
+@@ -272,14 +272,7 @@
+ errstr);
+ break;
+ case 'n':
+- if (strspn(optarg, "0123456789") != strlen(optarg)) {
+- name = optarg;
+- break;
+- }
+- id = strtonum(optarg, 0, LONG_MAX, &errstr);
+- if (errstr != NULL)
+- errx(EX_USAGE, "Bad id '%s': %s", optarg,
+- errstr);
++ name = optarg;
+ break;
+ case 'o':
+ conf.checkduplicate = false;
Added: head/share/security/patches/EN-15:16/pw.patch.asc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/security/patches/EN-15:16/pw.patch.asc Wed Sep 16 21:14:16 2015 (r47415)
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.1.8 (FreeBSD)
+
+iQIcBAABCgAGBQJV+dqfAAoJEO1n7NZdz2rnarwQAOPy1lZk3bioNnSmfjgmofDK
+6GH/macYjrW96GYeeojKtMybdMS2WXjljBrcsF07vZrpGOy10N0keEja79V6UeLa
+XJXVZ627z2iDHlSYK8jnhf5LWG3oGBLElKr+toIPCY45w+gA2hPgnZg0NBpw/Qwv
+I3ktLoMMr7Ie9k9xLJ3g1ySHqALX1fPYowUUqBNSgazCiBNCPTH5kh1fj2sdPA6S
+COtgXMOPjS/f+7Q7ixGvsruJj66tOs73gzhaVLjoi52SYL0G71gxhPEJzA2dDnRi
+j+V4U/GXJrCp0UKP89TBksNoYm2dd/nIy1TOyqCV+SozFvwjmP/zx9fcBbCQGPaH
+5fdcqMGvfXGEYn7kcybslPX1dVhtBsVPc20us/jx1KjwOla0yGScqhwfzii+NHTF
+0hKNvzExDazJZf/EIAj2Nnrd4kcj3kCm/kNPy+ypF2WxoeDyJwFertCZfsGrXSIU
+ValKtb+AzXZ+SxTj3B5Rl3wY9OG+i8V4nR9PG7SHWP9s3GEa5GrQVWUcr8qbFEED
+stiJhUtxyHU8E20oGnyrQrGOUyjvq8gWvNtov7bln9tvnG91LLVMBnQNGsHIshzE
+/OP6hgAaaNL+6zQ0XgUMO+RpyKg4Zvj7jHpcHonuwQqUno1zcqGPU/m3GMlyWb/9
+Aydc6sgQYRTF5pvuYeba
+=4C+I
+-----END PGP SIGNATURE-----
Added: head/share/security/patches/EN-15:17/libc.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/security/patches/EN-15:17/libc.patch Wed Sep 16 21:14:16 2015 (r47415)
@@ -0,0 +1,771 @@
+Index: lib/libc/amd64/gen/setjmp.S
+===================================================================
+--- lib/libc/amd64/gen/setjmp.S (revision 287549)
++++ lib/libc/amd64/gen/setjmp.S (working copy)
+@@ -55,7 +55,7 @@ ENTRY(setjmp)
+ movq $0,%rsi /* (sigset_t*)set */
+ leaq 72(%rcx),%rdx /* 9,10; (sigset_t*)oset */
+ /* stack is 16-byte aligned */
+- call PIC_PLT(CNAME(_sigprocmask))
++ call __libc_sigprocmask
+ popq %rdi
+ movq %rdi,%rcx
+ movq 0(%rsp),%rdx /* retval */
+@@ -83,7 +83,7 @@ ENTRY(__longjmp)
+ leaq 72(%rdx),%rsi /* (sigset_t*)set */
+ movq $0,%rdx /* (sigset_t*)oset */
+ subq $0x8,%rsp /* make the stack 16-byte aligned */
+- call PIC_PLT(CNAME(_sigprocmask))
++ call __libc_sigprocmask
+ addq $0x8,%rsp
+ popq %rsi
+ popq %rdi /* jmpbuf */
+Index: lib/libc/amd64/gen/sigsetjmp.S
+===================================================================
+--- lib/libc/amd64/gen/sigsetjmp.S (revision 287549)
++++ lib/libc/amd64/gen/sigsetjmp.S (working copy)
+@@ -63,7 +63,7 @@ ENTRY(sigsetjmp)
+ movq $0,%rsi /* (sigset_t*)set */
+ leaq 72(%rcx),%rdx /* 9,10 (sigset_t*)oset */
+ /* stack is 16-byte aligned */
+- call PIC_PLT(CNAME(_sigprocmask))
++ call __libc_sigprocmask
+ popq %rdi
+ 2: movq %rdi,%rcx
+ movq 0(%rsp),%rdx /* retval */
+@@ -92,7 +92,7 @@ ENTRY(__siglongjmp)
+ leaq 72(%rdx),%rsi /* (sigset_t*)set */
+ movq $0,%rdx /* (sigset_t*)oset */
+ subq $0x8,%rsp /* make the stack 16-byte aligned */
+- call PIC_PLT(CNAME(_sigprocmask))
++ call __libc_sigprocmask
+ addq $0x8,%rsp
+ popq %rsi
+ popq %rdi /* jmpbuf */
+Index: lib/libc/compat-43/sigcompat.c
+===================================================================
+--- lib/libc/compat-43/sigcompat.c (revision 287549)
++++ lib/libc/compat-43/sigcompat.c (working copy)
+@@ -59,7 +59,7 @@ sigvec(signo, sv, osv)
+ } else
+ sap = NULL;
+ osap = osv != NULL ? &osa : NULL;
+- ret = _sigaction(signo, sap, osap);
++ ret = __libc_sigaction(signo, sap, osap);
+ if (ret == 0 && osv != NULL) {
+ osv->sv_handler = osa.sa_handler;
+ osv->sv_flags = osa.sa_flags ^ SV_INTERRUPT;
+@@ -77,7 +77,7 @@ sigsetmask(mask)
+
+ sigemptyset(&set);
+ set.__bits[0] = mask;
+- n = _sigprocmask(SIG_SETMASK, &set, &oset);
++ n = __libc_sigprocmask(SIG_SETMASK, &set, &oset);
+ if (n)
+ return (n);
+ return (oset.__bits[0]);
+@@ -92,7 +92,7 @@ sigblock(mask)
+
+ sigemptyset(&set);
+ set.__bits[0] = mask;
+- n = _sigprocmask(SIG_BLOCK, &set, &oset);
++ n = __libc_sigprocmask(SIG_BLOCK, &set, &oset);
+ if (n)
+ return (n);
+ return (oset.__bits[0]);
+@@ -105,7 +105,7 @@ sigpause(int mask)
+
+ sigemptyset(&set);
+ set.__bits[0] = mask;
+- return (_sigsuspend(&set));
++ return (__libc_sigsuspend(&set));
+ }
+
+ int
+@@ -113,11 +113,11 @@ xsi_sigpause(int sig)
+ {
+ sigset_t set;
+
+- if (_sigprocmask(SIG_BLOCK, NULL, &set) == -1)
++ if (__libc_sigprocmask(SIG_BLOCK, NULL, &set) == -1)
+ return (-1);
+ if (sigdelset(&set, sig) == -1)
+ return (-1);
+- return (_sigsuspend(&set));
++ return (__libc_sigsuspend(&set));
+ }
+
+ int
+@@ -128,7 +128,7 @@ sighold(int sig)
+ sigemptyset(&set);
+ if (sigaddset(&set, sig) == -1)
+ return (-1);
+- return (_sigprocmask(SIG_BLOCK, &set, NULL));
++ return (__libc_sigprocmask(SIG_BLOCK, &set, NULL));
+ }
+
+ int
+@@ -138,7 +138,7 @@ sigignore(int sig)
+
+ bzero(&sa, sizeof(sa));
+ sa.sa_handler = SIG_IGN;
+- return (_sigaction(sig, &sa, NULL));
++ return (__libc_sigaction(sig, &sa, NULL));
+ }
+
+ int
+@@ -149,7 +149,7 @@ sigrelse(int sig)
+ sigemptyset(&set);
+ if (sigaddset(&set, sig) == -1)
+ return (-1);
+- return (_sigprocmask(SIG_UNBLOCK, &set, NULL));
++ return (__libc_sigprocmask(SIG_UNBLOCK, &set, NULL));
+ }
+
+ void
+@@ -161,26 +161,26 @@ void
+ sigemptyset(&set);
+ if (sigaddset(&set, sig) == -1)
+ return (SIG_ERR);
+- if (_sigprocmask(SIG_BLOCK, NULL, &pset) == -1)
++ if (__libc_sigprocmask(SIG_BLOCK, NULL, &pset) == -1)
+ return (SIG_ERR);
+ if ((__sighandler_t *)disp == SIG_HOLD) {
+- if (_sigprocmask(SIG_BLOCK, &set, &pset) == -1)
++ if (__libc_sigprocmask(SIG_BLOCK, &set, &pset) == -1)
+ return (SIG_ERR);
+ if (sigismember(&pset, sig))
+ return (SIG_HOLD);
+ else {
+- if (_sigaction(sig, NULL, &psa) == -1)
++ if (__libc_sigaction(sig, NULL, &psa) == -1)
+ return (SIG_ERR);
+ return (psa.sa_handler);
+ }
+ } else {
+- if (_sigprocmask(SIG_UNBLOCK, &set, &pset) == -1)
++ if (__libc_sigprocmask(SIG_UNBLOCK, &set, &pset) == -1)
+ return (SIG_ERR);
+ }
+
+ bzero(&sa, sizeof(sa));
+ sa.sa_handler = disp;
+- if (_sigaction(sig, &sa, &psa) == -1)
++ if (__libc_sigaction(sig, &sa, &psa) == -1)
+ return (SIG_ERR);
+ if (sigismember(&pset, sig))
+ return (SIG_HOLD);
+Index: lib/libc/db/btree/bt_open.c
+===================================================================
+--- lib/libc/db/btree/bt_open.c (revision 287549)
++++ lib/libc/db/btree/bt_open.c (working copy)
+@@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$");
+ #include <string.h>
+ #include <unistd.h>
+ #include "un-namespace.h"
++#include "libc_private.h"
+
+ #include <db.h>
+ #include "btree.h"
+@@ -401,10 +402,10 @@ tmp(void)
+ }
+
+ (void)sigfillset(&set);
+- (void)_sigprocmask(SIG_BLOCK, &set, &oset);
++ (void)__libc_sigprocmask(SIG_BLOCK, &set, &oset);
+ if ((fd = mkostemp(path, O_CLOEXEC)) != -1)
+ (void)unlink(path);
+- (void)_sigprocmask(SIG_SETMASK, &oset, NULL);
++ (void)__libc_sigprocmask(SIG_SETMASK, &oset, NULL);
+ return(fd);
+ }
+
+Index: lib/libc/db/hash/hash_page.c
+===================================================================
+--- lib/libc/db/hash/hash_page.c (revision 287549)
++++ lib/libc/db/hash/hash_page.c (working copy)
+@@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$");
+ #include <assert.h>
+ #endif
+ #include "un-namespace.h"
++#include "libc_private.h"
+
+ #include <db.h>
+ #include "hash.h"
+@@ -861,10 +862,10 @@ open_temp(HTAB *hashp)
+
+ /* Block signals; make sure file goes away at process exit. */
+ (void)sigfillset(&set);
+- (void)_sigprocmask(SIG_BLOCK, &set, &oset);
++ (void)__libc_sigprocmask(SIG_BLOCK, &set, &oset);
+ if ((hashp->fp = mkostemp(path, O_CLOEXEC)) != -1)
+ (void)unlink(path);
+- (void)_sigprocmask(SIG_SETMASK, &oset, (sigset_t *)NULL);
++ (void)__libc_sigprocmask(SIG_SETMASK, &oset, (sigset_t *)NULL);
+ return (hashp->fp != -1 ? 0 : -1);
+ }
+
+Index: lib/libc/gen/daemon.c
+===================================================================
+--- lib/libc/gen/daemon.c (revision 287549)
++++ lib/libc/gen/daemon.c (working copy)
+@@ -41,10 +41,10 @@ __FBSDID("$FreeBSD$");
+ #include <signal.h>
+ #include <unistd.h>
+ #include "un-namespace.h"
++#include "libc_private.h"
+
+ int
+-daemon(nochdir, noclose)
+- int nochdir, noclose;
++daemon(int nochdir, int noclose)
+ {
+ struct sigaction osa, sa;
+ int fd;
+@@ -56,7 +56,7 @@ int
+ sigemptyset(&sa.sa_mask);
+ sa.sa_handler = SIG_IGN;
+ sa.sa_flags = 0;
+- osa_ok = _sigaction(SIGHUP, &sa, &osa);
++ osa_ok = __libc_sigaction(SIGHUP, &sa, &osa);
+
+ switch (fork()) {
+ case -1:
+@@ -74,7 +74,7 @@ int
+ newgrp = setsid();
+ oerrno = errno;
+ if (osa_ok != -1)
+- _sigaction(SIGHUP, &osa, NULL);
++ __libc_sigaction(SIGHUP, &osa, NULL);
+
+ if (newgrp == -1) {
+ errno = oerrno;
+Index: lib/libc/gen/posix_spawn.c
+===================================================================
+--- lib/libc/gen/posix_spawn.c (revision 287549)
++++ lib/libc/gen/posix_spawn.c (working copy)
+@@ -118,15 +118,18 @@ process_spawnattr(const posix_spawnattr_t sa)
+ return (errno);
+ }
+
+- /* Set signal masks/defaults */
++ /*
++ * Set signal masks/defaults.
++ * Use unwrapped syscall, libthr is in undefined state after vfork().
++ */
+ if (sa->sa_flags & POSIX_SPAWN_SETSIGMASK) {
+- _sigprocmask(SIG_SETMASK, &sa->sa_sigmask, NULL);
++ __sys_sigprocmask(SIG_SETMASK, &sa->sa_sigmask, NULL);
+ }
+
+ if (sa->sa_flags & POSIX_SPAWN_SETSIGDEF) {
+ for (i = 1; i <= _SIG_MAXSIG; i++) {
+ if (sigismember(&sa->sa_sigdefault, i))
+- if (_sigaction(i, &sigact, NULL) != 0)
++ if (__sys_sigaction(i, &sigact, NULL) != 0)
+ return (errno);
+ }
+ }
+Index: lib/libc/gen/readpassphrase.c
+===================================================================
+--- lib/libc/gen/readpassphrase.c (revision 287549)
++++ lib/libc/gen/readpassphrase.c (working copy)
+@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
+ #include <unistd.h>
+ #include <readpassphrase.h>
+ #include "un-namespace.h"
++#include "libc_private.h"
+
+ static volatile sig_atomic_t signo[NSIG];
+
+@@ -104,15 +105,15 @@ restart:
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0; /* don't restart system calls */
+ sa.sa_handler = handler;
+- (void)_sigaction(SIGALRM, &sa, &savealrm);
+- (void)_sigaction(SIGHUP, &sa, &savehup);
+- (void)_sigaction(SIGINT, &sa, &saveint);
+- (void)_sigaction(SIGPIPE, &sa, &savepipe);
+- (void)_sigaction(SIGQUIT, &sa, &savequit);
+- (void)_sigaction(SIGTERM, &sa, &saveterm);
+- (void)_sigaction(SIGTSTP, &sa, &savetstp);
+- (void)_sigaction(SIGTTIN, &sa, &savettin);
+- (void)_sigaction(SIGTTOU, &sa, &savettou);
++ (void)__libc_sigaction(SIGALRM, &sa, &savealrm);
++ (void)__libc_sigaction(SIGHUP, &sa, &savehup);
++ (void)__libc_sigaction(SIGINT, &sa, &saveint);
++ (void)__libc_sigaction(SIGPIPE, &sa, &savepipe);
++ (void)__libc_sigaction(SIGQUIT, &sa, &savequit);
++ (void)__libc_sigaction(SIGTERM, &sa, &saveterm);
++ (void)__libc_sigaction(SIGTSTP, &sa, &savetstp);
++ (void)__libc_sigaction(SIGTTIN, &sa, &savettin);
++ (void)__libc_sigaction(SIGTTOU, &sa, &savettou);
+
+ if (!(flags & RPP_STDIN))
+ (void)_write(output, prompt, strlen(prompt));
+@@ -142,15 +143,15 @@ restart:
+ errno == EINTR && !signo[SIGTTOU])
+ continue;
+ }
+- (void)_sigaction(SIGALRM, &savealrm, NULL);
+- (void)_sigaction(SIGHUP, &savehup, NULL);
+- (void)_sigaction(SIGINT, &saveint, NULL);
+- (void)_sigaction(SIGQUIT, &savequit, NULL);
+- (void)_sigaction(SIGPIPE, &savepipe, NULL);
+- (void)_sigaction(SIGTERM, &saveterm, NULL);
+- (void)_sigaction(SIGTSTP, &savetstp, NULL);
+- (void)_sigaction(SIGTTIN, &savettin, NULL);
+- (void)_sigaction(SIGTTOU, &savettou, NULL);
++ (void)__libc_sigaction(SIGALRM, &savealrm, NULL);
++ (void)__libc_sigaction(SIGHUP, &savehup, NULL);
++ (void)__libc_sigaction(SIGINT, &saveint, NULL);
++ (void)__libc_sigaction(SIGQUIT, &savequit, NULL);
++ (void)__libc_sigaction(SIGPIPE, &savepipe, NULL);
++ (void)__libc_sigaction(SIGTERM, &saveterm, NULL);
++ (void)__libc_sigaction(SIGTSTP, &savetstp, NULL);
++ (void)__libc_sigaction(SIGTTIN, &savettin, NULL);
++ (void)__libc_sigaction(SIGTTOU, &savettou, NULL);
+ if (input != STDIN_FILENO)
+ (void)_close(input);
+
+Index: lib/libc/gen/setmode.c
+===================================================================
+--- lib/libc/gen/setmode.c (revision 287549)
++++ lib/libc/gen/setmode.c (working copy)
+@@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
+ #include <stdio.h>
+ #endif
+ #include "un-namespace.h"
++#include "libc_private.h"
+
+ #define SET_LEN 6 /* initial # of bitcmd struct to malloc */
+ #define SET_LEN_INCR 4 /* # of bitcmd structs to add as needed */
+@@ -187,10 +188,10 @@ setmode(const char *p)
+ * as best we can.
+ */
+ sigfillset(&sigset);
+- (void)_sigprocmask(SIG_BLOCK, &sigset, &sigoset);
++ (void)__libc_sigprocmask(SIG_BLOCK, &sigset, &sigoset);
+ (void)umask(mask = umask(0));
+ mask = ~mask;
+- (void)_sigprocmask(SIG_SETMASK, &sigoset, NULL);
++ (void)__libc_sigprocmask(SIG_SETMASK, &sigoset, NULL);
+
+ setlen = SET_LEN + 2;
+
+Index: lib/libc/gen/siginterrupt.c
+===================================================================
+--- lib/libc/gen/siginterrupt.c (revision 287549)
++++ lib/libc/gen/siginterrupt.c (working copy)
+@@ -43,14 +43,13 @@ __FBSDID("$FreeBSD$");
+ * after an instance of the indicated signal.
+ */
+ int
+-siginterrupt(sig, flag)
+- int sig, flag;
++siginterrupt(int sig, int flag)
+ {
+ extern sigset_t _sigintr __hidden;
+ struct sigaction sa;
+ int ret;
+
+- if ((ret = _sigaction(sig, (struct sigaction *)0, &sa)) < 0)
++ if ((ret = __libc_sigaction(sig, (struct sigaction *)0, &sa)) < 0)
+ return (ret);
+ if (flag) {
+ sigaddset(&_sigintr, sig);
+@@ -59,5 +58,5 @@ int
+ sigdelset(&_sigintr, sig);
+ sa.sa_flags |= SA_RESTART;
+ }
+- return (_sigaction(sig, &sa, (struct sigaction *)0));
++ return (__libc_sigaction(sig, &sa, (struct sigaction *)0));
+ }
+Index: lib/libc/gen/signal.c
+===================================================================
+--- lib/libc/gen/signal.c (revision 287549)
++++ lib/libc/gen/signal.c (working copy)
+@@ -44,9 +44,7 @@ __FBSDID("$FreeBSD$");
+ sigset_t _sigintr __hidden; /* shared with siginterrupt */
+
+ sig_t
+-signal(s, a)
+- int s;
+- sig_t a;
++signal(int s, sig_t a)
+ {
+ struct sigaction sa, osa;
+
+@@ -55,7 +53,7 @@ sig_t
+ sa.sa_flags = 0;
+ if (!sigismember(&_sigintr, s))
+ sa.sa_flags |= SA_RESTART;
+- if (_sigaction(s, &sa, &osa) < 0)
++ if (__libc_sigaction(s, &sa, &osa) < 0)
+ return (SIG_ERR);
+ return (osa.sa_handler);
+ }
+Index: lib/libc/gen/wordexp.c
+===================================================================
+--- lib/libc/gen/wordexp.c (revision 287549)
++++ lib/libc/gen/wordexp.c (working copy)
+@@ -38,6 +38,7 @@
+ #include <unistd.h>
+ #include <wordexp.h>
+ #include "un-namespace.h"
++#include "libc_private.h"
+
+ __FBSDID("$FreeBSD$");
+
+@@ -127,12 +128,12 @@ we_askshell(const char *words, wordexp_t *we, int
+ return (WRDE_NOSPACE); /* XXX */
+ (void)sigemptyset(&newsigblock);
+ (void)sigaddset(&newsigblock, SIGCHLD);
+- (void)_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock);
++ (void)__libc_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock);
+ if ((pid = fork()) < 0) {
+ serrno = errno;
+ _close(pdes[0]);
+ _close(pdes[1]);
+- (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
++ (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
+ errno = serrno;
+ return (WRDE_NOSPACE); /* XXX */
+ }
+@@ -141,7 +142,7 @@ we_askshell(const char *words, wordexp_t *we, int
+ * We are the child; just get /bin/sh to run the wordexp
+ * builtin on `words'.
+ */
+- (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
++ (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
+ if ((pdes[1] != STDOUT_FILENO ?
+ _dup2(pdes[1], STDOUT_FILENO) :
+ _fcntl(pdes[1], F_SETFD, 0)) < 0)
+@@ -210,7 +211,7 @@ cleanup:
+ do
+ wpid = _waitpid(pid, &status, 0);
+ while (wpid < 0 && errno == EINTR);
+- (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
++ (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
+ if (error != 0) {
+ errno = serrno;
+ return (error);
+Index: lib/libc/i386/gen/setjmp.S
+===================================================================
+--- lib/libc/i386/gen/setjmp.S (revision 287549)
++++ lib/libc/i386/gen/setjmp.S (working copy)
+@@ -50,21 +50,12 @@ __FBSDID("$FreeBSD$");
+
+ ENTRY(setjmp)
+ movl 4(%esp),%ecx
+- PIC_PROLOGUE
+-#ifdef PIC
+- subl $12,%esp /* make the stack 16-byte aligned */
+-#endif
+ leal 28(%ecx), %eax
+ pushl %eax /* (sigset_t*)oset */
+ pushl $0 /* (sigset_t*)set */
+ pushl $1 /* SIG_BLOCK */
+- call PIC_PLT(CNAME(_sigprocmask))
+-#ifdef PIC
+- addl $24,%esp
+-#else
++ call __libc_sigprocmask
+ addl $12,%esp
+-#endif
+- PIC_EPILOGUE
+ movl 4(%esp),%ecx
+ movl 0(%esp),%edx
+ movl %edx, 0(%ecx)
+@@ -82,21 +73,12 @@ END(setjmp)
+ .set CNAME(longjmp),CNAME(__longjmp)
+ ENTRY(__longjmp)
+ movl 4(%esp),%edx
+- PIC_PROLOGUE
+-#ifdef PIC
+- subl $12,%esp /* make the stack 16-byte aligned */
+-#endif
+ pushl $0 /* (sigset_t*)oset */
+ leal 28(%edx), %eax
+ pushl %eax /* (sigset_t*)set */
+ pushl $3 /* SIG_SETMASK */
+- call PIC_PLT(CNAME(_sigprocmask))
+-#ifdef PIC
+- addl $24,%esp
+-#else
++ call __libc_sigprocmask
+ addl $12,%esp
+-#endif
+- PIC_EPILOGUE
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ movl 0(%edx),%ecx
+Index: lib/libc/i386/gen/sigsetjmp.S
+===================================================================
+--- lib/libc/i386/gen/sigsetjmp.S (revision 287549)
++++ lib/libc/i386/gen/sigsetjmp.S (working copy)
+@@ -59,21 +59,12 @@ ENTRY(sigsetjmp)
+ movl %eax,44(%ecx)
+ testl %eax,%eax
+ jz 2f
+- PIC_PROLOGUE
+-#ifdef PIC
+- subl $12,%esp /* make the stack 16-byte aligned */
+-#endif
+ leal 28(%ecx), %eax
+ pushl %eax /* (sigset_t*)oset */
+ pushl $0 /* (sigset_t*)set */
+ pushl $1 /* SIG_BLOCK */
+- call PIC_PLT(CNAME(_sigprocmask))
+-#ifdef PIC
+- addl $24,%esp
+-#else
++ call __libc_sigprocmask
+ addl $12,%esp
+-#endif
+- PIC_EPILOGUE
+ movl 4(%esp),%ecx
+ 2: movl 0(%esp),%edx
+ movl %edx, 0(%ecx)
+@@ -93,21 +84,12 @@ ENTRY(__siglongjmp)
+ movl 4(%esp),%edx
+ cmpl $0,44(%edx)
+ jz 2f
+- PIC_PROLOGUE
+-#ifdef PIC
+- subl $12,%esp /* make the stack 16-byte aligned */
+-#endif
+ pushl $0 /* (sigset_t*)oset */
+ leal 28(%edx), %eax
+ pushl %eax /* (sigset_t*)set */
+ pushl $3 /* SIG_SETMASK */
+- call PIC_PLT(CNAME(_sigprocmask))
+-#ifdef PIC
+- addl $24,%esp
+-#else
++ call __libc_sigprocmask
+ addl $12,%esp
+-#endif
+- PIC_EPILOGUE
+ movl 4(%esp),%edx
+ 2: movl 8(%esp),%eax
+ movl 0(%edx),%ecx
+Index: lib/libc/include/libc_private.h
+===================================================================
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-doc-head
mailing list