aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/formdata.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/formdata.c b/lib/formdata.c
index a5118b389..e9db070c9 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -282,13 +282,15 @@ static const char * ContentTypeForFilename (const char *filename,
text/plain so we don't actually need to set this: */
contenttype = HTTPPOST_CONTENTTYPE_DEFAULT;
- for(i=0; i<sizeof(ctts)/sizeof(ctts[0]); i++) {
- if(strlen(filename) >= strlen(ctts[i].extension)) {
- if(strequal(filename +
- strlen(filename) - strlen(ctts[i].extension),
- ctts[i].extension)) {
- contenttype = ctts[i].type;
- break;
+ if(filename) { /* in case a NULL was passed in */
+ for(i=0; i<sizeof(ctts)/sizeof(ctts[0]); i++) {
+ if(strlen(filename) >= strlen(ctts[i].extension)) {
+ if(strequal(filename +
+ strlen(filename) - strlen(ctts[i].extension),
+ ctts[i].extension)) {
+ contenttype = ctts[i].type;
+ break;
+ }
}
}
}
@@ -315,10 +317,14 @@ static char *memdup(const char *src, size_t buffer_length)
if (buffer_length)
length = buffer_length;
- else {
+ else if(src) {
length = strlen(src);
add = TRUE;
}
+ else
+ /* no length and a NULL src pointer! */
+ return strdup((char *)"");
+
buffer = (char*)malloc(length+add);
if (!buffer)
return NULL; /* fail */