From d1dddedf7893fe70ed5d429485c8bcd0ab43f285 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 29 Dec 2001 15:57:15 +0000 Subject: Realloc error handling memory leak fix. --- elf/dl-object.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'elf/dl-object.c') diff --git a/elf/dl-object.c b/elf/dl-object.c index ed78b47127..eee9deb3d2 100644 --- a/elf/dl-object.c +++ b/elf/dl-object.c @@ -121,11 +121,16 @@ _dl_new_object (char *realname, const char *libname, int type, origin = NULL; do { + char *new_origin; + len += 128; - origin = (char *) realloc (origin, len); + new_origin = (char *) realloc (origin, len); + if (new_origin == NULL) + /* We exit the loop. Note that result == NULL. */ + break; + origin = new_origin; } - while (origin != NULL - && (result = __getcwd (origin, len - realname_len)) == NULL + while ((result = __getcwd (origin, len - realname_len)) == NULL && errno == ERANGE); if (result == NULL) -- cgit v1.2.3