Date: Wed, 16 Sep 2015 21:14:17 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r47415 - in head/share: security/advisories security/patches/EN-15:16 security/patches/EN-15:17 security/patches/EN-15:18 xml Message-ID: <201509162114.t8GLEHTH099214@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509162114.t8GLEHTH099214>