1999-06-17  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* elf/dl-load.c (_dl_init_paths): Add one more element to aelem
	to not write beyond allocated memory.
	Reported by John Reiser <jreiser@BitWagon.com>, closes PR libc/1167.

1999-06-17  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/mtrace.c: Keep lock while printing output lines.
	Patch by carsten.zimmermann@mediaways.net [PR libc/1166].
This commit is contained in:
Ulrich Drepper 1999-06-17 09:36:54 +00:00
parent 0013b2b1df
commit 92e4472f1f
3 changed files with 18 additions and 5 deletions

View File

@ -1,3 +1,14 @@
1999-06-17 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* elf/dl-load.c (_dl_init_paths): Add one more element to aelem
to not write beyond allocated memory.
Reported by John Reiser <jreiser@BitWagon.com>, closes PR libc/1167.
1999-06-17 Ulrich Drepper <drepper@cygnus.com>
* malloc/mtrace.c: Keep lock while printing output lines.
Patch by carsten.zimmermann@mediaways.net [PR libc/1166].
1999-06-16 Ulrich Drepper <drepper@cygnus.com> 1999-06-16 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Add warnings about broken code. * configure.in: Add warnings about broken code.

View File

@ -513,7 +513,7 @@ _dl_init_paths (const char *llp)
/* First set up the rest of the default search directory entries. */ /* First set up the rest of the default search directory entries. */
aelem = rtld_search_dirs = (struct r_search_path_elem **) aelem = rtld_search_dirs = (struct r_search_path_elem **)
malloc ((sizeof (system_dirs_len) / sizeof (system_dirs_len[0])) malloc ((sizeof (system_dirs_len) / sizeof (system_dirs_len[0]) + 1)
* sizeof (struct r_search_path_elem *)); * sizeof (struct r_search_path_elem *));
if (rtld_search_dirs == NULL) if (rtld_search_dirs == NULL)
_dl_signal_error (ENOMEM, NULL, "cannot create search path array"); _dl_signal_error (ENOMEM, NULL, "cannot create search path array");

View File

@ -127,9 +127,11 @@ tr_freehook (ptr, caller)
__ptr_t ptr; __ptr_t ptr;
const __ptr_t caller; const __ptr_t caller;
{ {
__libc_lock_lock (lock);
tr_where (caller); tr_where (caller);
/* Be sure to print it first. */ /* Be sure to print it first. */
fprintf (mallstream, "- %p\n", ptr); fprintf (mallstream, "- %p\n", ptr);
__libc_lock_unlock (lock);
if (ptr == mallwatch) if (ptr == mallwatch)
tr_break (); tr_break ();
__libc_lock_lock (lock); __libc_lock_lock (lock);
@ -159,12 +161,12 @@ tr_mallochook (size, caller)
hdr = (__ptr_t) malloc (size); hdr = (__ptr_t) malloc (size);
__malloc_hook = tr_mallochook; __malloc_hook = tr_mallochook;
__libc_lock_unlock (lock);
tr_where (caller); tr_where (caller);
/* We could be printing a NULL here; that's OK. */ /* We could be printing a NULL here; that's OK. */
fprintf (mallstream, "+ %p %#lx\n", hdr, (unsigned long int) size); fprintf (mallstream, "+ %p %#lx\n", hdr, (unsigned long int) size);
__libc_lock_unlock (lock);
if (hdr == mallwatch) if (hdr == mallwatch)
tr_break (); tr_break ();
@ -196,8 +198,6 @@ tr_reallochook (ptr, size, caller)
__malloc_hook = tr_mallochook; __malloc_hook = tr_mallochook;
__realloc_hook = tr_reallochook; __realloc_hook = tr_reallochook;
__libc_lock_unlock (lock);
tr_where (caller); tr_where (caller);
if (hdr == NULL) if (hdr == NULL)
/* Failed realloc. */ /* Failed realloc. */
@ -211,6 +211,8 @@ tr_reallochook (ptr, size, caller)
fprintf (mallstream, "> %p %#lx\n", hdr, (unsigned long int) size); fprintf (mallstream, "> %p %#lx\n", hdr, (unsigned long int) size);
} }
__libc_lock_unlock (lock);
if (hdr == mallwatch) if (hdr == mallwatch)
tr_break (); tr_break ();