66 lines
2.2 KiB
Diff
66 lines
2.2 KiB
Diff
From a923456e77edf732de8ad842ebe6e17d5d9e3a13 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Stenberg <daniel@haxx.se>
|
|
Date: Sun, 31 May 2020 23:09:59 +0200
|
|
Subject: [PATCH 1/2] tool_getparam: -i is not OK if -J is used
|
|
|
|
Reported-by: sn on hackerone
|
|
Bug: https://curl.haxx.se/docs/CVE-2020-8177.html
|
|
---
|
|
src/tool_cb_hdr.c | 22 ++++------------------
|
|
src/tool_getparam.c | 5 +++++
|
|
2 files changed, 9 insertions(+), 18 deletions(-)
|
|
|
|
diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c
|
|
index 3b10238..b80707f 100644
|
|
--- a/src/tool_cb_hdr.c
|
|
+++ b/src/tool_cb_hdr.c
|
|
@@ -186,25 +186,11 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
|
|
filename = parse_filename(p, len);
|
|
if(filename) {
|
|
if(outs->stream) {
|
|
- int rc;
|
|
- /* already opened and possibly written to */
|
|
- if(outs->fopened)
|
|
- fclose(outs->stream);
|
|
- outs->stream = NULL;
|
|
-
|
|
- /* rename the initial file name to the new file name */
|
|
- rc = rename(outs->filename, filename);
|
|
- if(rc != 0) {
|
|
- warnf(per->config->global, "Failed to rename %s -> %s: %s\n",
|
|
- outs->filename, filename, strerror(errno));
|
|
- }
|
|
- if(outs->alloc_filename)
|
|
- Curl_safefree(outs->filename);
|
|
- if(rc != 0) {
|
|
- free(filename);
|
|
- return failure;
|
|
- }
|
|
+ /* indication of problem, get out! */
|
|
+ free(filename);
|
|
+ return failure;
|
|
}
|
|
+
|
|
outs->is_cd_filename = TRUE;
|
|
outs->s_isreg = TRUE;
|
|
outs->fopened = FALSE;
|
|
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
|
|
index 764caa2..c5c7429 100644
|
|
--- a/src/tool_getparam.c
|
|
+++ b/src/tool_getparam.c
|
|
@@ -1807,6 +1807,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|
}
|
|
break;
|
|
case 'i':
|
|
+ if(config->content_disposition) {
|
|
+ warnf(global,
|
|
+ "--include and --remote-header-name cannot be combined.\n");
|
|
+ return PARAM_BAD_USE;
|
|
+ }
|
|
config->show_headers = toggle; /* show the headers as well in the
|
|
general output stream */
|
|
break;
|
|
--
|
|
1.8.3.1
|
|
|