mirror of
https://github.com/curl/curl.git
synced 2026-05-30 06:57:28 +03:00
telnet: only accept option arguments in ascii
To avoid embedded telnet negotiation commands etc. Reported-by: Harry Sintonen Closes #10728
This commit is contained in:
parent
674a0662cf
commit
538b1e79a6
1 changed files with 15 additions and 0 deletions
15
lib/telnet.c
15
lib/telnet.c
|
|
@ -770,6 +770,17 @@ static void printsub(struct Curl_easy *data,
|
|||
}
|
||||
}
|
||||
|
||||
static bool str_is_nonascii(const char *str)
|
||||
{
|
||||
size_t len = strlen(str);
|
||||
while(len--) {
|
||||
if(*str & 0x80)
|
||||
return TRUE;
|
||||
str++;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static CURLcode check_telnet_options(struct Curl_easy *data)
|
||||
{
|
||||
struct curl_slist *head;
|
||||
|
|
@ -781,6 +792,8 @@ static CURLcode check_telnet_options(struct Curl_easy *data)
|
|||
was given on the command line */
|
||||
if(data->state.aptr.user) {
|
||||
char buffer[256];
|
||||
if(str_is_nonascii(data->conn->user))
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
msnprintf(buffer, sizeof(buffer), "USER,%s", data->conn->user);
|
||||
beg = curl_slist_append(tn->telnet_vars, buffer);
|
||||
if(!beg) {
|
||||
|
|
@ -800,6 +813,8 @@ static CURLcode check_telnet_options(struct Curl_easy *data)
|
|||
if(sep) {
|
||||
olen = sep - option;
|
||||
arg = ++sep;
|
||||
if(str_is_nonascii(arg))
|
||||
continue;
|
||||
switch(olen) {
|
||||
case 5:
|
||||
/* Terminal type */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue