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.
This commit is contained in:
parent
a5b7e3205d
commit
47dda4a1d4
23
src/main.c
23
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);
|
||||
|
Loading…
Reference in New Issue
Block a user