From: Daniel Stenberg Date: Sun, 17 Apr 2022 09:18:16 +0000 (+0200) Subject: curl: error out if -T and -d are used for the same URL X-Git-Tag: curl-7_83_0~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01a1697a79205faa9c5e3b0d8a63f98dc4fb8fa0;p=thirdparty%2Fcurl.git curl: error out if -T and -d are used for the same URL As one implies PUT and the other POST, both cannot be used simultaneously. Add test 378 to verify. Reported-by: Boris Verkhovskiy Fixes #8704 Closes #8715 --- diff --git a/src/tool_helpers.c b/src/tool_helpers.c index 9244d1fb5a..d47a8d244b 100644 --- a/src/tool_helpers.c +++ b/src/tool_helpers.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2021, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -85,7 +85,8 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store) "GET (-G, --get)", "HEAD (-I, --head)", "multipart formpost (-F, --form)", - "POST (-d, --data)" + "POST (-d, --data)", + "PUT (-T, --upload-file)" }; if((*store == HTTPREQ_UNSPEC) || @@ -109,7 +110,8 @@ void customrequest_helper(struct OperationConfig *config, HttpReq req, "GET", "HEAD", "POST", - "POST" + "POST", + "PUT" }; if(!method) diff --git a/src/tool_operate.c b/src/tool_operate.c index cc9fc9a57c..bf6aff6eea 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -917,6 +917,12 @@ static CURLcode single_transfer(struct GlobalConfig *global, result = CURLE_OUT_OF_MEMORY; break; } + if(SetHTTPrequest(config, HTTPREQ_PUT, &config->httpreq)) { + Curl_safefree(per->uploadfile); + curl_easy_cleanup(curl); + result = CURLE_FAILED_INIT; + break; + } } *added = TRUE; per->config = config; diff --git a/src/tool_sdecls.h b/src/tool_sdecls.h index 543a953fda..ed7d779669 100644 --- a/src/tool_sdecls.h +++ b/src/tool_sdecls.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2021, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -127,7 +127,8 @@ typedef enum { HTTPREQ_GET, HTTPREQ_HEAD, HTTPREQ_MIMEPOST, - HTTPREQ_SIMPLEPOST + HTTPREQ_SIMPLEPOST, + HTTPREQ_PUT } HttpReq; diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 9863a9d21c..7e9b6b4fb7 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -61,7 +61,7 @@ test334 test335 test336 test337 test338 test339 test340 test341 test342 \ test343 test344 test345 test346 test347 test348 test349 test350 test351 \ test352 test353 test354 test355 test356 test357 test358 test359 test360 \ test361 test362 test363 test364 test365 test366 test367 test368 test369 \ -test370 test371 test372 test373 test374 test375 test376 \ +test370 test371 test372 test373 test374 test375 test376 test378 \ \ test380 test381 test383 test384 test385 test386 \ \ diff --git a/tests/data/test378 b/tests/data/test378 new file mode 100644 index 0000000000..650e7d4e17 --- /dev/null +++ b/tests/data/test378 @@ -0,0 +1,39 @@ + + + +HTTP PUT +HTTP POST + + + +# +# Server-side + + + +# +# Client-side + + +none + + +Reject using -T and -d at once + + +-T log/%TESTNUMBER -d input http://never-accessed + + + +# +# Verify data after the test has been "shot" + + +2 + + +Warning: You can only select one HTTP request method! You asked for both PUT +Warning: (-T, --upload-file) and POST (-d, --data). + + +