From: Daniel Stenberg Date: Sun, 6 Jul 2025 10:33:51 +0000 (+0200) Subject: docs: mention the as-is concept generically X-Git-Tag: curl-8_15_0~57 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=897633eb210d5c8861495ce12d2e0ebdc1919efc;p=thirdparty%2Fcurl.git docs: mention the as-is concept generically for curl command line options and for curl_easy_setopt Closes #17829 --- diff --git a/docs/cmdline-opts/_OPTIONS.md b/docs/cmdline-opts/_OPTIONS.md index c4493647a8..f1067377c8 100644 --- a/docs/cmdline-opts/_OPTIONS.md +++ b/docs/cmdline-opts/_OPTIONS.md @@ -28,6 +28,9 @@ The first argument that is exactly two dashes (`--`), marks the end of options; any argument after the end of options is interpreted as a URL argument even if it starts with a dash. +curl does little to no verification of the contents of command line arguments. +Passing in "creative octets" like newlines might trigger unexpected results. + The following options are global: `%GLOBALS`. # ALL OPTIONS diff --git a/docs/libcurl/curl_easy_setopt.md b/docs/libcurl/curl_easy_setopt.md index 4af2be82f9..ccca56de6b 100644 --- a/docs/libcurl/curl_easy_setopt.md +++ b/docs/libcurl/curl_easy_setopt.md @@ -41,28 +41,36 @@ manual carefully as bad input values may cause libcurl to behave badly. You can only set one option in each function call. A typical application uses many curl_easy_setopt(3) calls in the setup phase. -Options set with this function call are valid for all forthcoming transfers -performed using this *handle*. The options are not in any way reset between -transfers, so if you want subsequent transfers with different options, you -must change them between the transfers. You can optionally reset all options -back to internal default with curl_easy_reset(3). +The *handle* argument is the return code from a curl_easy_init(3) or +curl_easy_duphandle(3) call. + +Options set with this function call are sticky. They remain set for all +forthcoming transfers performed using this *handle*. The options are not in +any way reset between transfers, so if you want subsequent transfers with +different options, you must change them between the transfers. You can +optionally reset all options back to internal default with curl_easy_reset(3). + +The order in which the options are set does not matter. + +# STRINGS Strings passed to libcurl as 'char *' arguments, are copied by the library; the string storage associated to the pointer argument may be discarded or reused after curl_easy_setopt(3) returns. The only exception to this rule is really CURLOPT_POSTFIELDS(3), but the alternative that copies the string CURLOPT_COPYPOSTFIELDS(3) has some usage characteristics you need to read up -on. This function does not accept input strings longer than +on. + +This function does not accept input strings longer than **CURL_MAX_INPUT_LENGTH** (8 MB). -The order in which the options are set does not matter. +libcurl does little to no verification of the contents of provided strings. +Passing in "creative octets" like newlines where they are not expected might +trigger unexpected results. Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them. -The *handle* is the return code from a curl_easy_init(3) or -curl_easy_duphandle(3) call. - # OPTIONS ## CURLOPT_ABSTRACT_UNIX_SOCKET