From 23ba2c6d162657649b1a135cd27cf874d324607a Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Tue, 10 Jun 2008 16:21:22 +0000 Subject: [PATCH] * Fix a crash in the realloc() wrapper occurring when dlsym() or dlopen() call realloc() with a NULL pointer. --- src/lib-mem.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib-mem.c b/src/lib-mem.c index e0b58e6..2f02326 100644 --- a/src/lib-mem.c +++ b/src/lib-mem.c @@ -173,7 +173,11 @@ void *NEW(realloc)(void *ptr, size_t size) || ((uintptr_t)ptr >= DUMMY_START && (uintptr_t)ptr < DUMMY_STOP)) { ret = dummy_buffer + dummy_offset; - memcpy(ret, ptr, size); + /* XXX: If ptr is NULL, we don't copy anything. If it is non-NULL, we + * copy everything even if it is too big, we don't have anything to + * overflow really. */ + if(ptr) + memcpy(ret, ptr, size); dummy_offset += (size + 7) * 8; debug("%s(%p, %li) = %p", __func__, ptr, (long int)size, ret); return ret;