From 88d88a58d71d7241c8100fc28b449815018082bc Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 10 Jan 2001 01:02:24 +0000 Subject: Update. * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): Minimal cleanups. Add assert to ensure memory handling is correct. --- ChangeLog | 3 +++ sysdeps/generic/elf/backtracesyms.c | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ce8be06e6..224d5fcd65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2001-01-09 Ulrich Drepper + * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): + Minimal cleanups. Add assert to ensure memory handling is correct. + * manual/conf.texi (File Minimums): Fix _POSIX_PATH_MAX value. Reported by Ben Collins . diff --git a/sysdeps/generic/elf/backtracesyms.c b/sysdeps/generic/elf/backtracesyms.c index 0419773d40..2f6208fb8e 100644 --- a/sysdeps/generic/elf/backtracesyms.c +++ b/sysdeps/generic/elf/backtracesyms.c @@ -1,5 +1,5 @@ /* Return list with names for address in backtrace. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -18,6 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include @@ -50,7 +51,7 @@ __backtrace_symbols (array, size) status[cnt] = _dl_addr (array[cnt], &info[cnt]); if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0') /* We have some info, compute the length of the string which will be - "()[+offset]. */ + "() [+offset]. */ total += (strlen (info[cnt].dli_fname ?: "") + (info[cnt].dli_sname ? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3 @@ -61,7 +62,7 @@ __backtrace_symbols (array, size) } /* Allocate memory for the result. */ - result = malloc (size * sizeof (char *) + total); + result = (char **) malloc (size * sizeof (char *) + total); if (result != NULL) { char *last = (char *) (result + size); @@ -93,6 +94,7 @@ __backtrace_symbols (array, size) else last += 1 + sprintf (last, "[%p]", array[cnt]); } + assert (last <= (char *) result + size * sizeof (char *) + total); } return result; -- cgit 1.4.1