diff options
author | jcid <devnull@localhost> | 2008-09-01 17:16:11 +0200 |
---|---|---|
committer | jcid <devnull@localhost> | 2008-09-01 17:16:11 +0200 |
commit | 614a7b0ab6440821a3be0a0693ca7ff6f18d528a (patch) | |
tree | 526783505ab332605a004b7da70d9a53abfbf019 /src | |
parent | d3bd2f6e3c9c1456022c63eb52927233b088011c (diff) |
- Reversed multipart filename name encoding (RFC 2231). Servers don't like it.
Diffstat (limited to 'src')
-rw-r--r-- | src/form.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/form.cc b/src/form.cc index 068faec9..cbc23af5 100644 --- a/src/form.cc +++ b/src/form.cc @@ -1336,9 +1336,20 @@ void DilloHtmlForm::appendInputMultipartFiles(Dstr* data, dStr_sprintfa(data, "\r\n" "Content-Disposition: form-data; name=\"%s\"; " - "filename=\"%s\"\r\n" + "filename=\"", name); + /* + * Servers don't seem to like encoded names yet, but let's at least + * replace the characters that are the most likely to damage things. + */ + for (int i = 0; char c = filename[i]; i++) { + if (c == '\"' || c == '\r' || c == '\n') + c = '_'; + dStr_append_c(data, c); + } + dStr_sprintfa(data, + "\"\r\n" "Content-Type: %s\r\n" - "\r\n", name, filename, ctype); + "\r\n", ctype); dStr_append_l(data, file->str, file->len); @@ -1361,7 +1372,7 @@ void DilloHtmlForm::appendInputMultipart(Dstr *data, dStr_append(data, "--"); dStr_append(data, boundary); } - // todo: encode name (RFC 2231) [coming soon] + // todo: encode name (RFC 2231) dStr_sprintfa(data, "\r\n" "Content-Disposition: form-data; name=\"%s\"\r\n" |