From: Daniel Stenberg Date: Mon, 19 Apr 2010 15:05:46 +0000 (+0200) Subject: parse_filename: strip trailing CRs and LFs X-Git-Tag: curl-7_21_0~140^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=47dda4a1d43c9341753388ab3babb0d27cf34840;p=thirdparty%2Fcurl.git parse_filename: strip trailing CRs and LFs The feature that uses the file name given in a Content-disposition: header didn't properly skip trailing carriage returns and linefeed characters from the end of the file name when it was given without quotes. --- diff --git a/src/main.c b/src/main.c index 0670b5f5cd..b7e438b1e6 100644 --- a/src/main.c +++ b/src/main.c @@ -4200,9 +4200,26 @@ parse_filename(char *ptr, size_t len) } } - q = strrchr(p, quote); - if (q) - *q = 0; + if(quote) { + /* if the file name started with a quote, then scan for the end quote and + stop there */ + q = strrchr(p, quote); + if (q) + *q = 0; + } + else + q = NULL; /* no start quote, so no end has been found */ + + if(!q) { + /* make sure the file name doesn't end in \r or \n */ + q = strchr(p, '\r'); + if(q) + *q = 0; + + q = strchr(p, '\n'); + if(q) + *q = 0; + } if (copy!=p) memmove(copy, p, strlen(p)+1);