diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-08-26 08:30:38 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-08-27 14:17:36 +0200 |
commit | 6ebe63fac23f38df911edc348e8ccc72280f9434 (patch) | |
tree | c1bb753c9f971a177e8fa02d4d630d81d1bac924 /lib/setopt.c | |
parent | 9ee5701f12818e455c898c1a660cfd11d7e46518 (diff) | |
download | curl-6ebe63fac23f38df911edc348e8ccc72280f9434.tar.gz |
options: API for meta-data about easy options
const struct curl_easyoption *curl_easy_option_by_name(const char *name);
const struct curl_easyoption *curl_easy_option_by_id (CURLoption id);
const struct curl_easyoption *
curl_easy_option_next(const struct curl_easyoption *prev);
The purpose is to provide detailed enough information to allow for
example libcurl bindings to get option information at run-time about
what easy options that exist and what arguments they expect.
Assisted-by: Jeroen Ooms
Closes #5365
Diffstat (limited to 'lib/setopt.c')
-rw-r--r-- | lib/setopt.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/setopt.c b/lib/setopt.c index 768452ca1..6631c13fe 100644 --- a/lib/setopt.c +++ b/lib/setopt.c @@ -720,6 +720,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) argptr = (char *)va_arg(param, void *); if(argptr) { struct curl_slist *cl; + /* general protection against mistakes and abuse */ + if(strlen(argptr) > CURL_MAX_INPUT_LENGTH) + return CURLE_BAD_FUNCTION_ARGUMENT; /* append the cookie file name to the list of file names, and deal with them later */ cl = curl_slist_append(data->change.cookielist, argptr); @@ -804,6 +807,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* if cookie engine was not running, activate it */ data->cookies = Curl_cookie_init(data, NULL, NULL, TRUE); + /* general protection against mistakes and abuse */ + if(strlen(argptr) > CURL_MAX_INPUT_LENGTH) + return CURLE_BAD_FUNCTION_ARGUMENT; argptr = strdup(argptr); if(!argptr || !data->cookies) { result = CURLE_OUT_OF_MEMORY; |