diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2003-01-30 05:04:02 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2003-01-30 05:04:02 +0000 | 
| commit | 169b2eeb94f7643229ac08fe305876530d40a680 (patch) | |
| tree | c7e85f448b7389a61d4389d261b43a35cc4a3e82 /lib | |
| parent | f81d027f60f0c015ab227338f4a43737cbe84d2e (diff) | |
Fixes bug #669059. We now extract the Content-Type better and more accurate.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/transfer.c | 35 | 
1 files 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 && | 
