From 2894a2d44cfa29c250276853e460b7fb5ea1ef7e Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Tue, 3 Mar 2015 12:44:46 +0100 Subject: [PATCH 1/1] fio: fix smalloc strdop allocation failure smalloc_strdup didn't check for allocation success and thereby ran into segfaults if the single pool went out of memory. Now with this patch applied it is still failing, but in a more consistent way than segfaulting. You still get a bad allocation, but it looks like this now: fio: smalloc OOM fio: filesetup.c:1495: dup_files: Assertion `0' failed. Aborted In fact the upper layers expected smalloc_strdup to retrun NULL on failure. Signed-off-by: Christian Ehrhardt Signed-off-by: Jens Axboe --- smalloc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/smalloc.c b/smalloc.c index 67cb7cc1..66f9ec0d 100644 --- a/smalloc.c +++ b/smalloc.c @@ -492,9 +492,10 @@ void *scalloc(size_t nmemb, size_t size) char *smalloc_strdup(const char *str) { - char *ptr; + char *ptr = NULL; ptr = smalloc(strlen(str) + 1); - strcpy(ptr, str); + if (ptr) + strcpy(ptr, str); return ptr; } -- 2.25.1