summaryrefslogtreecommitdiff
path: root/lib/strdup.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/strdup.c')
-rw-r--r--lib/strdup.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/strdup.c b/lib/strdup.c
index 97a4890e0..eef9e08ec 100644
--- a/lib/strdup.c
+++ b/lib/strdup.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -27,13 +27,17 @@
#ifndef HAVE_STRDUP
char *curlx_strdup(const char *str)
{
- int len;
+ size_t len;
char *newstr;
if(!str)
return (char *)NULL;
len = strlen(str);
+
+ if(len >= ((size_t)-1) / sizeof(char))
+ return (char *)NULL;
+
newstr = (char *) malloc((len+1)*sizeof(char));
if(!newstr)
return (char *)NULL;