From 92e4472f1fe087c1d2c239b3de7f7348d1a5c933 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 17 Jun 1999 09:36:54 +0000 Subject: Update. 1999-06-17 Andreas Jaeger * elf/dl-load.c (_dl_init_paths): Add one more element to aelem to not write beyond allocated memory. Reported by John Reiser , closes PR libc/1167. 1999-06-17 Ulrich Drepper * malloc/mtrace.c: Keep lock while printing output lines. Patch by carsten.zimmermann@mediaways.net [PR libc/1166]. --- ChangeLog | 11 +++++++++++ elf/dl-load.c | 2 +- malloc/mtrace.c | 10 ++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 736e412a8a..4a00f8220b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +1999-06-17 Andreas Jaeger + + * elf/dl-load.c (_dl_init_paths): Add one more element to aelem + to not write beyond allocated memory. + Reported by John Reiser , closes PR libc/1167. + +1999-06-17 Ulrich Drepper + + * malloc/mtrace.c: Keep lock while printing output lines. + Patch by carsten.zimmermann@mediaways.net [PR libc/1166]. + 1999-06-16 Ulrich Drepper * configure.in: Add warnings about broken code. diff --git a/elf/dl-load.c b/elf/dl-load.c index 5ed5128ef5..a0448e9091 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -513,7 +513,7 @@ _dl_init_paths (const char *llp) /* First set up the rest of the default search directory entries. */ 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 *)); if (rtld_search_dirs == NULL) _dl_signal_error (ENOMEM, NULL, "cannot create search path array"); diff --git a/malloc/mtrace.c b/malloc/mtrace.c index 6af064c6ce..c539cb47ea 100644 --- a/malloc/mtrace.c +++ b/malloc/mtrace.c @@ -127,9 +127,11 @@ tr_freehook (ptr, caller) __ptr_t ptr; const __ptr_t caller; { + __libc_lock_lock (lock); tr_where (caller); /* Be sure to print it first. */ fprintf (mallstream, "- %p\n", ptr); + __libc_lock_unlock (lock); if (ptr == mallwatch) tr_break (); __libc_lock_lock (lock); @@ -159,12 +161,12 @@ tr_mallochook (size, caller) hdr = (__ptr_t) malloc (size); __malloc_hook = tr_mallochook; - __libc_lock_unlock (lock); - tr_where (caller); /* We could be printing a NULL here; that's OK. */ fprintf (mallstream, "+ %p %#lx\n", hdr, (unsigned long int) size); + __libc_lock_unlock (lock); + if (hdr == mallwatch) tr_break (); @@ -196,8 +198,6 @@ tr_reallochook (ptr, size, caller) __malloc_hook = tr_mallochook; __realloc_hook = tr_reallochook; - __libc_lock_unlock (lock); - tr_where (caller); if (hdr == NULL) /* Failed realloc. */ @@ -211,6 +211,8 @@ tr_reallochook (ptr, size, caller) fprintf (mallstream, "> %p %#lx\n", hdr, (unsigned long int) size); } + __libc_lock_unlock (lock); + if (hdr == mallwatch) tr_break (); -- cgit 1.4.1