summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2023-05-08 00:12:25 +0200
committerDaniel Stenberg <daniel@haxx.se>2023-05-08 14:10:34 +0200
commitfb7886b9c95009a837f584caf4943a455f3daa60 (patch)
treeaeaaf18ca696bef34f0d797239ec8e6f4d557a2c
parent39434db41f3b976396f16f46f9a7ef759f2a5755 (diff)
downloadcurl-fb7886b9c95009a837f584caf4943a455f3daa60.tar.gz
transfer: refuse POSTFIELDS + RESUME_FROM combo
The code assumes that such a resume is wanting to continue an upload using the read callback, and since POSTFIELDS is done without callback libcurl will just misbehave. This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT with an explanation in the error message. Reported-by: Smackd0wn on github Fixes #11081 Closes #11083
-rw-r--r--lib/transfer.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 947070956..d2ff0c24c 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1325,6 +1325,12 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
}
}
+ if(data->set.postfields && data->set.set_resume_from) {
+ /* we can't */
+ failf(data, "cannot mix POSTFIELDS with RESUME_FROM");
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+
data->state.prefer_ascii = data->set.prefer_ascii;
data->state.list_only = data->set.list_only;
data->state.httpreq = data->set.method;