diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-06-27 09:15:54 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2005-06-27 09:15:54 +0000 |
commit | 5570fbd25a574d54ab135e1d3cdac0bc74029689 (patch) | |
tree | 6af711ed17dd644491e68d1a85c22e51bac87179 /debug | |
parent | e4edec582dc1fb924a2cfbfb07409fd7b3c84a26 (diff) | |
download | glibc-5570fbd25a574d54ab135e1d3cdac0bc74029689.tar.gz glibc-5570fbd25a574d54ab135e1d3cdac0bc74029689.tar.xz glibc-5570fbd25a574d54ab135e1d3cdac0bc74029689.zip |
Updated to fedora-glibc-20050627T0850
Diffstat (limited to 'debug')
-rw-r--r-- | debug/Makefile | 4 | ||||
-rw-r--r-- | debug/Versions | 3 | ||||
-rw-r--r-- | debug/stack_chk_fail.c | 33 | ||||
-rw-r--r-- | debug/stack_chk_fail_local.c | 30 |
4 files changed, 68 insertions, 2 deletions
diff --git a/debug/Makefile b/debug/Makefile index 42e64ad16f..6ec08dc94a 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -31,9 +31,9 @@ routines = backtrace backtracesyms backtracesymsfd noophooks \ printf_chk fprintf_chk vprintf_chk vfprintf_chk \ gets_chk chk_fail readonly-area fgets_chk fgets_u_chk \ read_chk pread_chk pread64_chk recv_chk recvfrom_chk \ - readlink_chk getwd_chk getcwd_chk \ + readlink_chk getwd_chk getcwd_chk stack_chk_fail \ $(static-only-routines) -static-only-routines := warning-nop +static-only-routines := warning-nop stack_chk_fail_local CFLAGS-backtrace.c = -fno-omit-frame-pointer CFLAGS-sprintf_chk.c = -D_IO_MTSAFE_IO diff --git a/debug/Versions b/debug/Versions index 07d6fbb830..7cbb02c31e 100644 --- a/debug/Versions +++ b/debug/Versions @@ -18,4 +18,7 @@ libc { __printf_chk; __fprintf_chk; __vprintf_chk; __vfprintf_chk; __gets_chk; } + GLIBC_2.4 { + __stack_chk_fail; + } } diff --git a/debug/stack_chk_fail.c b/debug/stack_chk_fail.c new file mode 100644 index 0000000000..298b323671 --- /dev/null +++ b/debug/stack_chk_fail.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <stdio.h> +#include <stdlib.h> + + +extern char **__libc_argv attribute_hidden; + +void +__attribute__ ((noreturn)) +__stack_chk_fail (void) +{ + /* The loop is added only to keep gcc happy. */ + while (1) + __libc_message (1, "*** stack smashing detected ***: %s terminated\n", + __libc_argv[0] ?: "<unknown>"); +} diff --git a/debug/stack_chk_fail_local.c b/debug/stack_chk_fail_local.c new file mode 100644 index 0000000000..de0de8f397 --- /dev/null +++ b/debug/stack_chk_fail_local.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <sys/cdefs.h> + +extern void __stack_chk_fail (void) __attribute__ ((noreturn)); + +/* On some architectures, this helps needless PIC pointer setup + that would be needed just for the __stack_chk_fail call. */ + +void __attribute__ ((noreturn)) attribute_hidden +__stack_chk_fail_local (void) +{ + __stack_chk_fail (); +} |