1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-05-28 16:21:30 +03:00
* sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
	Minimal cleanups.  Add assert to ensure memory handling is correct.
This commit is contained in:
Ulrich Drepper 2001-01-10 01:02:24 +00:00
parent 4ab5b7b53f
commit 88d88a58d7
2 changed files with 8 additions and 3 deletions

View File

@ -1,5 +1,8 @@
2001-01-09 Ulrich Drepper <drepper@redhat.com> 2001-01-09 Ulrich Drepper <drepper@redhat.com>
* 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. * manual/conf.texi (File Minimums): Fix _POSIX_PATH_MAX value.
Reported by Ben Collins <bcollins@debian.org>. Reported by Ben Collins <bcollins@debian.org>.

View File

@ -1,5 +1,5 @@
/* Return list with names for address in backtrace. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -18,6 +18,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <execinfo.h> #include <execinfo.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -50,7 +51,7 @@ __backtrace_symbols (array, size)
status[cnt] = _dl_addr (array[cnt], &info[cnt]); status[cnt] = _dl_addr (array[cnt], &info[cnt]);
if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0') 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 /* We have some info, compute the length of the string which will be
"<fct-name>(<sym-name>)[+offset]. */ "<file-name>(<sym-name>) [+offset]. */
total += (strlen (info[cnt].dli_fname ?: "") total += (strlen (info[cnt].dli_fname ?: "")
+ (info[cnt].dli_sname + (info[cnt].dli_sname
? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3 ? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3
@ -61,7 +62,7 @@ __backtrace_symbols (array, size)
} }
/* Allocate memory for the result. */ /* Allocate memory for the result. */
result = malloc (size * sizeof (char *) + total); result = (char **) malloc (size * sizeof (char *) + total);
if (result != NULL) if (result != NULL)
{ {
char *last = (char *) (result + size); char *last = (char *) (result + size);
@ -93,6 +94,7 @@ __backtrace_symbols (array, size)
else else
last += 1 + sprintf (last, "[%p]", array[cnt]); last += 1 + sprintf (last, "[%p]", array[cnt]);
} }
assert (last <= (char *) result + size * sizeof (char *) + total);
} }
return result; return result;