1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

* elf/dl-error.c (_dl_signal_error): Store information about use of

real malloc in the catch object.
	(_dl_catch_error): Forward information about malloc use to caller
	in new parameter.
	(_dl_out_of_memory): Make static.
	* elf/dl-deps.c: Adjust callers of _dl_catch_error.
	* elf/dl-libc.c: Likewise.
	* elf/dl-open.c: Likewise.
	* elf/rtld.c: Likewise.
	Add new --audit option.
	* sysdeps/generic/ldsodefs.h: Remove _dl_out_of_memory declaration.
	(rtld_global_ro._dl_signal_error): Add new parameter.
	* include/dlfcn.h (_dl_catch_error): Add new parameter.
	* dlfcn/dlfcn.c (_dlerror_run): Pass additional parameter to
	_dl_catch_error.  Only free if the returned newly value says so.
This commit is contained in:
Ulrich Drepper
2005-06-12 16:29:51 +00:00
parent 6dffebd8b4
commit 74780cf659
8 changed files with 108 additions and 41 deletions

View File

@ -1,5 +1,5 @@
/* Handle loading and unloading shared objects for internal libc purposes.
Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Copyright (C) 1999,2000,2001,2002,2004,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.columbia.edu>, 1999.
@ -42,12 +42,13 @@ dlerror_run (void (*operate) (void *), void *args)
{
const char *objname;
const char *last_errstring = NULL;
int result;
bool malloced;
(void) GLRO(dl_catch_error) (&objname, &last_errstring, operate, args);
(void) GLRO(dl_catch_error) (&objname, &last_errstring, &malloced,
operate, args);
result = last_errstring != NULL;
if (result && last_errstring != _dl_out_of_memory)
int result = last_errstring != NULL;
if (result && malloced)
free ((char *) last_errstring);
return result;