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.
Reported by Ben Collins <bcollins@debian.org>.
/* 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 <drepper@cygnus.com>, 1998.
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#include <assert.h>
#include <execinfo.h>
#include <stdio.h>
#include <stdlib.h>
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
- "<fct-name>(<sym-name>)[+offset]. */
+ "<file-name>(<sym-name>) [+offset]. */
total += (strlen (info[cnt].dli_fname ?: "")
+ (info[cnt].dli_sname
? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3
}
/* 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);
else
last += 1 + sprintf (last, "[%p]", array[cnt]);
}
+ assert (last <= (char *) result + size * sizeof (char *) + total);
}
return result;