summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch')
-rw-r--r--sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch96
1 files changed, 90 insertions, 6 deletions
diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch
index 98e07710f123..e94e5573c3f0 100644
--- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch
+++ b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch
@@ -15,20 +15,90 @@ Index: fbsd-6/lib/libc/sys/ssp.c
===================================================================
--- /dev/null
+++ fbsd-6/lib/libc/sys/ssp.c
-@@ -0,0 +1,13 @@
-+#include <stdlib.h>
+@@ -0,0 +1,83 @@
++/*
++ * Copyright (c) 2002 Hiroaki Etoh, Federico G. Schwindt, and Miodrag Vallat.
++ * Copyright (c) 2006 Ned Ludd <solar@gentoo.org>
++ * Diego Pettenò <flameeyes@gentoo.org>
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT,
++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
++ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++ * POSSIBILITY OF SUCH DAMAGE.
++ *
++ */
++
+#include <sys/param.h>
+#include <sys/sysctl.h>
++#include <signal.h>
++#include <string.h>
++#include <syslog.h>
++#include <unistd.h>
++#include <stdlib.h>
++
++extern int __sysctl(int *, u_int, void *, size_t *, void *, size_t);
+
+unsigned long __guard = 0UL;
+void __guard_setup(void) __attribute__ ((constructor));
-+void __stack_smash_handler(char func[], int damaged __attribute__ ((unused)));
-+void __guard_setup(void) { if (__guard != 0UL) return; __guard = 0xFF0A0D00UL; }
++void __stack_smash_handler(char func[], int damaged __attribute__((unused)));
+
-+void __stack_smash_handler(char func[], int damaged) {
-+ _exit(127);
++void
++__guard_setup(void)
++{
++ int i, mib[2];
++ size_t len = 4;
++
++ __guard = 0xFF0A0D00UL;
++ if (__guard != 0) return;
++
++ srandomdev();
++
++ __guard = random();
+}
+
++void
++__stack_smash_handler(char func[], int damaged)
++{
++ static const char message[] = "stack overflow in function ";
++ struct sigaction sa;
++ sigset_t mask;
++
++ /* Immediately block all signal handlers from running code */
++ sigfillset(&mask);
++ sigdelset(&mask, SIGABRT);
++ sigprocmask(SIG_BLOCK, &mask, NULL);
++
++ write(2, message, sizeof(message));
++ write(2, func, strlen(func));
++ write(2, "\n", 1);
++
++ bzero(&sa, sizeof(struct sigaction));
++ sigemptyset(&sa.sa_mask);
++ sa.sa_flags = 0;
++ sa.sa_handler = SIG_DFL;
++ sigaction(SIGABRT, &sa, NULL);
++
++ kill(getpid(), SIGABRT);
++
++ _exit(127);
++}
Index: fbsd-6/lib/csu/i386-elf/crt1.c
===================================================================
--- fbsd-6.orig/lib/csu/i386-elf/crt1.c
@@ -49,3 +119,17 @@ Index: fbsd-6/lib/csu/i386-elf/crt1.c
exit( main(argc, argv, env) );
}
+Index: fbsd-6/lib/libc/Makefile
+===================================================================
+--- fbsd-6.orig/lib/libc/Makefile
++++ fbsd-6/lib/libc/Makefile
+@@ -15,6 +15,9 @@ SHLIBDIR?= /lib
+ WARNS?= 2
+ CFLAGS+=-I${.CURDIR}/include -I${.CURDIR}/../../include
+ CFLAGS+=-I${.CURDIR}/${MACHINE_ARCH}
++# Disable stack protection for the only libc, and leave it for the rest of
++# the libraries.
++CFLAGS+= -fno-stack-protector
+ CLEANFILES+=tags
+ INSTALL_PIC_ARCHIVE=
+ PRECIOUSLIB=