Blame SOURCES/0021-curl-7.61.1-CVE-2020-8177.patch

36ebb2
From a6fcd8a32f3b1c5d80e524f8b2c1de32e6ecdb2b Mon Sep 17 00:00:00 2001
36ebb2
From: Daniel Stenberg <daniel@haxx.se>
36ebb2
Date: Sun, 31 May 2020 23:09:59 +0200
36ebb2
Subject: [PATCH] tool_getparam: -i is not OK if -J is used
36ebb2
36ebb2
Reported-by: sn on hackerone
36ebb2
Bug: https://curl.haxx.se/docs/CVE-2020-8177.html
36ebb2
36ebb2
Upstream-commit: 8236aba58542c5f89f1d41ca09d84579efb05e22
36ebb2
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
36ebb2
---
36ebb2
 src/tool_cb_hdr.c   | 13 ++++---------
36ebb2
 src/tool_getparam.c |  5 +++++
36ebb2
 2 files changed, 9 insertions(+), 9 deletions(-)
36ebb2
36ebb2
diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c
36ebb2
index 3b10238..b80707f 100644
36ebb2
--- a/src/tool_cb_hdr.c
36ebb2
+++ b/src/tool_cb_hdr.c
36ebb2
@@ -132,16 +132,11 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
36ebb2
       filename = parse_filename(p, len);
36ebb2
       if(filename) {
36ebb2
         if(outs->stream) {
36ebb2
-          /* already opened and possibly written to */
36ebb2
-          if(outs->fopened)
36ebb2
-            fclose(outs->stream);
36ebb2
-          outs->stream = NULL;
36ebb2
-
36ebb2
-          /* rename the initial file name to the new file name */
36ebb2
-          rename(outs->filename, filename);
36ebb2
-          if(outs->alloc_filename)
36ebb2
-            free(outs->filename);
36ebb2
+          /* indication of problem, get out! */
36ebb2
+          free(filename);
36ebb2
+          return failure;
36ebb2
         }
36ebb2
+
36ebb2
         outs->is_cd_filename = TRUE;
36ebb2
         outs->s_isreg = TRUE;
36ebb2
         outs->fopened = FALSE;
36ebb2
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
36ebb2
index 764caa2..c5c7429 100644
36ebb2
--- a/src/tool_getparam.c
36ebb2
+++ b/src/tool_getparam.c
36ebb2
@@ -1745,6 +1745,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
36ebb2
       }
36ebb2
       break;
36ebb2
     case 'i':
36ebb2
+      if(config->content_disposition) {
36ebb2
+        warnf(global,
36ebb2
+              "--include and --remote-header-name cannot be combined.\n");
36ebb2
+        return PARAM_BAD_USE;
36ebb2
+      }
36ebb2
       config->show_headers = toggle; /* show the headers as well in the
36ebb2
                                         general output stream */
36ebb2
       break;
36ebb2
-- 
36ebb2
2.21.3
36ebb2