From 3e6a354c4c7e9ff0bccd43221713bbf327d4670f Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 17 Nov 2000 15:31:45 +0000
Subject: [PATCH] now exits and alerts on bad uses of strdup() and free()

---
 lib/memdebug.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/lib/memdebug.c b/lib/memdebug.c
index dceb3bea93..9e5ca50409 100644
--- a/lib/memdebug.c
+++ b/lib/memdebug.c
@@ -74,8 +74,17 @@ void *curl_domalloc(size_t size, int line, char *source)
 
 char *curl_dostrdup(char *str, int line, char *source)
 {
-  char *mem=(strdup)(str);
-  size_t len=strlen(str)+1;
+  char *mem;
+  size_t len;
+  
+  if(NULL ==str) {
+    fprintf(stderr, "ILLEGAL strdup() on NULL at %s:%d\n",
+            source, line);
+    exit(2);
+  }
+
+  mem=(strdup)(str);
+  len=strlen(str)+1;
   fprintf(logfile?logfile:stderr, "MEM %s:%d strdup(%p) (%d) = %p\n",
           source, line, str, len, mem);
   return mem;
@@ -91,7 +100,14 @@ void *curl_dorealloc(void *ptr, size_t size, int line, char *source)
 
 void curl_dofree(void *ptr, int line, char *source)
 {
+  if(NULL == ptr) {
+    fprintf(stderr, "ILLEGAL free() on NULL at %s:%d\n",
+            source, line);
+    exit(2);
+  }
+
   (free)(ptr);
+
   fprintf(logfile?logfile:stderr, "MEM %s:%d free(%p)\n",
           source, line, ptr);
 }
-- 
GitLab