From owner-svn-src-stable@freebsd.org Tue Sep 22 10:48:29 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 68641A06AC2; Tue, 22 Sep 2015 10:48:29 +0000 (UTC) (envelope-from jlh@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3F0111DA8; Tue, 22 Sep 2015 10:48:29 +0000 (UTC) (envelope-from jlh@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t8MAmTl4082097; Tue, 22 Sep 2015 10:48:29 GMT (envelope-from jlh@FreeBSD.org) Received: (from jlh@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t8MAmTXb082096; Tue, 22 Sep 2015 10:48:29 GMT (envelope-from jlh@FreeBSD.org) Message-Id: <201509221048.t8MAmTXb082096@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jlh set sender to jlh@FreeBSD.org using -f From: Jeremie Le Hen Date: Tue, 22 Sep 2015 10:48:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r288105 - stable/10/lib/libc/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Sep 2015 10:48:29 -0000 Author: jlh Date: Tue Sep 22 10:48:28 2015 New Revision: 288105 URL: https://svnweb.freebsd.org/changeset/base/288105 Log: Long overdue MFC r284377: NetBSD commit log: Use a constant array for the MIB. Newer LLVM decided that mib[] warranted stack protections, with the obvious crash after the setup was done. As a positive side effect, code size shrinks a bit. I'm not sure why this hasn't bitten us yes, but it is certainly possible and there are no real drawbacks to this change anyway. Submitted by: pfg Obtained from: NetBSD Modified: stable/10/lib/libc/sys/stack_protector.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/sys/stack_protector.c ============================================================================== --- stable/10/lib/libc/sys/stack_protector.c Tue Sep 22 10:45:50 2015 (r288104) +++ stable/10/lib/libc/sys/stack_protector.c Tue Sep 22 10:48:28 2015 (r288105) @@ -41,8 +41,8 @@ __FBSDID("$FreeBSD$"); #include #include "libc_private.h" -extern int __sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, - void *newp, size_t newlen); +extern int __sysctl(const int *name, u_int namelen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen); long __stack_chk_guard[8] = {0, 0, 0, 0, 0, 0, 0, 0}; static void __guard_setup(void) __attribute__((__constructor__, __used__)); @@ -54,7 +54,7 @@ void __chk_fail(void); static void __guard_setup(void) { - int mib[2]; + static const int mib[2] = { CTL_KERN, KERN_ARND }; size_t len; int error; @@ -65,12 +65,9 @@ __guard_setup(void) if (error == 0 && __stack_chk_guard[0] != 0) return; - mib[0] = CTL_KERN; - mib[1] = KERN_ARND; - len = sizeof(__stack_chk_guard); - if (__sysctl(mib, 2, __stack_chk_guard, &len, NULL, 0) == -1 || - len != sizeof(__stack_chk_guard)) { + if (__sysctl(mib, nitems(mib), __stack_chk_guard, &len, NULL, 0) == + -1 || len != sizeof(__stack_chk_guard)) { /* If sysctl was unsuccessful, use the "terminator canary". */ ((unsigned char *)(void *)__stack_chk_guard)[0] = 0; ((unsigned char *)(void *)__stack_chk_guard)[1] = 0;