]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tool_getparam: -i is not OK if -J is used
authorDaniel Stenberg <daniel@haxx.se>
Sun, 31 May 2020 21:09:59 +0000 (23:09 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 21 Jun 2020 22:49:58 +0000 (00:49 +0200)
Reported-by: sn on hackerone
Bug: https://curl.haxx.se/docs/CVE-2020-8177.html

src/tool_cb_hdr.c
src/tool_getparam.c

index 3b10238886690e4801eea986dd38bea8cd79305e..b80707fde57223841bf4b583ee52fb069cc2098a 100644 (file)
@@ -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;
index 0cd11c47986eb06279fac6b0af81461c0d709104..1ab3983f4ac19d49e00ed7b805d7348d0988d9d9 100644 (file)
@@ -1817,6 +1817,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;