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