From 09de0ff06ef5ebb3b594a42ca8996f92a854078a Mon Sep 17 00:00:00 2001 From: Guillaume Nault Date: Wed, 10 Jul 2013 12:54:52 +0200 Subject: memdbg: Accept short strings in md_strndup() Don't fail if string to duplicate is shorter than the size parameter and handle memory allocation failure. Signed-off-by: Guillaume Nault --- accel-pppd/memdebug.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/accel-pppd/memdebug.c b/accel-pppd/memdebug.c index 8c3c494..5629146 100644 --- a/accel-pppd/memdebug.c +++ b/accel-pppd/memdebug.c @@ -153,10 +153,15 @@ char __export *md_strdup(const char *ptr, const char *fname, int line) char __export *md_strndup(const char *ptr, size_t n, const char *fname, int line) { - struct mem_t *mem = _md_malloc(n + 1, fname, line); - memcpy(mem->data, ptr, n); - mem->data[n] = 0; - return mem->data; + size_t len = strnlen(ptr, n); + char *str = md_malloc(len + 1, fname, line); + + if (str) { + memcpy(str, ptr, len); + str[len] = '\0'; + } + + return str; } static void siginfo(int num) -- cgit v1.2.3