From 169b2eeb94f7643229ac08fe305876530d40a680 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 30 Jan 2003 05:04:02 +0000 Subject: Fixes bug #669059. We now extract the Content-Type better and more accurate. --- lib/transfer.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/lib/transfer.c b/lib/transfer.c index e8cad9e3f..d977013b1 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -567,22 +567,29 @@ CURLcode Curl_readwrite(struct connectdata *conn, *start && isspace((int)*start); start++); - /* count all non-space letters following */ - for(end=start, len=0; - *end && !isspace((int)*end); - end++, len++); - - /* allocate memory of a cloned copy */ - if(data->info.contenttype) - free(data->info.contenttype); + end = strchr(start, '\r'); + if(!end) + end = strchr(start, '\n'); + + if(end) { + /* skip all trailing space letters */ + for(; isspace(*end) && (end > start); end--); + + /* get length of the type */ + len = end-start+1; - data->info.contenttype = malloc(len + 1); - if (NULL == data->info.contenttype) - return CURLE_OUT_OF_MEMORY; + /* allocate memory of a cloned copy */ + if(data->info.contenttype) + free(data->info.contenttype); + + data->info.contenttype = malloc(len + 1); + if (NULL == data->info.contenttype) + return CURLE_OUT_OF_MEMORY; - /* copy the content-type string */ - memcpy(data->info.contenttype, start, len); - data->info.contenttype[len] = 0; /* zero terminate */ + /* copy the content-type string */ + memcpy(data->info.contenttype, start, len); + data->info.contenttype[len] = 0; /* zero terminate */ + } } else if((k->httpversion == 10) && conn->bits.httpproxy && -- cgit v1.2.3