mirror of
https://github.com/weechat/weechat.git
synced 2026-06-27 13:26:38 +02:00
relay: use util functions to parse integers
This commit is contained in:
@@ -77,7 +77,6 @@ relay_api_protocol_signal_buffer_cb (const void *pointer, void *data,
|
||||
long long buffer_id;
|
||||
int nicks;
|
||||
const char *ptr_id;
|
||||
char *error;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) data;
|
||||
@@ -119,9 +118,7 @@ relay_api_protocol_signal_buffer_cb (const void *pointer, void *data,
|
||||
ptr_buffer);
|
||||
if (ptr_id)
|
||||
{
|
||||
error = NULL;
|
||||
buffer_id = strtoll (ptr_id, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_longlong (ptr_id, 10, &buffer_id))
|
||||
buffer_id = -1;
|
||||
weechat_hashtable_remove (
|
||||
RELAY_API_DATA(ptr_client, buffers_closing),
|
||||
@@ -499,7 +496,7 @@ invalid_hash_algo:
|
||||
RELAY_API_PROTOCOL_CALLBACK(version)
|
||||
{
|
||||
cJSON *json;
|
||||
char *version, *error;
|
||||
char *version;
|
||||
long number;
|
||||
|
||||
json = cJSON_CreateObject ();
|
||||
@@ -517,9 +514,7 @@ RELAY_API_PROTOCOL_CALLBACK(version)
|
||||
free (version);
|
||||
|
||||
version = weechat_info_get ("version_number", NULL);
|
||||
error = NULL;
|
||||
number = strtol (version, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_long (version, 10, &number))
|
||||
{
|
||||
cJSON_AddItemToObject (json,
|
||||
"weechat_version_number",
|
||||
@@ -561,10 +556,9 @@ RELAY_API_PROTOCOL_CALLBACK(buffers)
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
struct t_gui_line *ptr_line;
|
||||
struct t_gui_line_data *ptr_line_data;
|
||||
long lines, lines_free, line_id;
|
||||
int colors, nicks;
|
||||
long lines, lines_free;
|
||||
int colors, nicks, line_id;
|
||||
const char *ptr_colors;
|
||||
char *error;
|
||||
|
||||
json = NULL;
|
||||
|
||||
@@ -610,9 +604,10 @@ RELAY_API_PROTOCOL_CALLBACK(buffers)
|
||||
{
|
||||
if (client->http_req->num_path_items > 4)
|
||||
{
|
||||
line_id = strtol (client->http_req->path_items[4], &error, 10);
|
||||
ptr_line = (error && !error[0]) ?
|
||||
weechat_line_search_by_id (ptr_buffer, line_id) : NULL;
|
||||
if (weechat_util_parse_int (client->http_req->path_items[4], 10, &line_id))
|
||||
ptr_line = weechat_line_search_by_id (ptr_buffer, line_id);
|
||||
else
|
||||
ptr_line = NULL;
|
||||
ptr_line_data = (ptr_line) ?
|
||||
weechat_hdata_pointer (relay_hdata_line, ptr_line, "data") : NULL;
|
||||
if (!ptr_line_data)
|
||||
|
||||
@@ -51,7 +51,6 @@ long long
|
||||
relay_api_get_buffer_id (struct t_gui_buffer *buffer)
|
||||
{
|
||||
const char *ptr_id;
|
||||
char *error;
|
||||
long long id;
|
||||
|
||||
if (!buffer)
|
||||
@@ -61,9 +60,7 @@ relay_api_get_buffer_id (struct t_gui_buffer *buffer)
|
||||
if (!ptr_id)
|
||||
return -1;
|
||||
|
||||
error = NULL;
|
||||
id = strtoll (ptr_id, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_longlong (ptr_id, 10, &id))
|
||||
return -1;
|
||||
|
||||
return id;
|
||||
|
||||
@@ -113,7 +113,6 @@ long long
|
||||
relay_remote_event_get_buffer_id (struct t_gui_buffer *buffer)
|
||||
{
|
||||
const char *ptr_id;
|
||||
char *error;
|
||||
long long buffer_id;
|
||||
|
||||
if (!buffer)
|
||||
@@ -123,9 +122,7 @@ relay_remote_event_get_buffer_id (struct t_gui_buffer *buffer)
|
||||
if (!ptr_id)
|
||||
return -1;
|
||||
|
||||
error = NULL;
|
||||
buffer_id = strtoll (ptr_id, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_longlong (ptr_id, 10, &buffer_id))
|
||||
return -1;
|
||||
|
||||
return buffer_id;
|
||||
|
||||
@@ -429,9 +429,8 @@ relay_irc_signal_irc_in2_cb (const void *pointer, void *data,
|
||||
int
|
||||
relay_irc_tag_relay_client_id (const char *tags)
|
||||
{
|
||||
char **argv, *error;
|
||||
int result, argc, i;
|
||||
long number;
|
||||
char **argv;
|
||||
int number, result, argc, i;
|
||||
|
||||
result = -1;
|
||||
|
||||
@@ -449,9 +448,7 @@ relay_irc_tag_relay_client_id (const char *tags)
|
||||
{
|
||||
if (strncmp (argv[i], "relay_client_", 13) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[i] + 13, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (argv[i] + 13, 10, &number))
|
||||
{
|
||||
result = number;
|
||||
break;
|
||||
@@ -1606,10 +1603,9 @@ relay_irc_recv (struct t_relay_client *client, const char *data)
|
||||
const char *ptr_data, *ptr_nick_modes, *pos;
|
||||
char str_time[128], str_signal[128], str_server_channel[256], *nick;
|
||||
char str_param[128], *str_args, *version, str_command[128], **params;
|
||||
char *password, *irc_is_channel, *info, *error, *str_cmd_lower;
|
||||
char *password, *irc_is_channel, *info, *str_cmd_lower;
|
||||
char modifier_data[128], *new_data, *ctcp_type, *ctcp_params, *nick_modes;
|
||||
long num_params;
|
||||
int i, redirect_msg;
|
||||
int i, num_params, redirect_msg;
|
||||
|
||||
new_data = NULL;
|
||||
hash_parsed = NULL;
|
||||
@@ -1650,9 +1646,7 @@ relay_irc_recv (struct t_relay_client *client, const char *data)
|
||||
goto end;
|
||||
irc_command = weechat_hashtable_get (hash_parsed, "command");
|
||||
str_num_params = weechat_hashtable_get (hash_parsed, "num_params");
|
||||
error = NULL;
|
||||
num_params = strtol (str_num_params, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (str_num_params, 10, &num_params))
|
||||
num_params = 0;
|
||||
if (num_params > 0)
|
||||
{
|
||||
|
||||
@@ -283,7 +283,7 @@ relay_auth_parse_pbkdf2 (const char *parameters,
|
||||
char **salt_hexa, char **salt, int *salt_size,
|
||||
int *iterations, char **hash)
|
||||
{
|
||||
char **argv, *error;
|
||||
char **argv;
|
||||
int argc;
|
||||
|
||||
if (salt_hexa)
|
||||
@@ -329,9 +329,7 @@ relay_auth_parse_pbkdf2 (const char *parameters,
|
||||
}
|
||||
|
||||
/* parameter 2: iterations */
|
||||
error = NULL;
|
||||
*iterations = (int)strtol (argv[1], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (argv[1], 10, iterations))
|
||||
*iterations = 0;
|
||||
|
||||
/* parameter 3: the PBKDF2 hash */
|
||||
@@ -362,9 +360,7 @@ int
|
||||
relay_auth_check_salt (struct t_relay_client *client,
|
||||
const char *salt_hexa, const char *salt, int salt_size)
|
||||
{
|
||||
long number;
|
||||
int time_window;
|
||||
char *error;
|
||||
long long number, time_window;
|
||||
time_t time_now;
|
||||
|
||||
if (!client)
|
||||
@@ -374,12 +370,10 @@ relay_auth_check_salt (struct t_relay_client *client,
|
||||
{
|
||||
if (!salt || (salt_size < 1))
|
||||
return 0;
|
||||
error = NULL;
|
||||
number = strtol (salt, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_longlong (salt, 10, &number))
|
||||
return 0;
|
||||
time_now = time (NULL);
|
||||
time_window = weechat_config_integer (relay_config_network_time_window);
|
||||
time_window = (long long)weechat_config_integer (relay_config_network_time_window);
|
||||
return ((number >= time_now - time_window)
|
||||
&& (number <= time_now + time_window)) ? 1 : 0;
|
||||
}
|
||||
|
||||
@@ -652,23 +652,46 @@ relay_config_check_port_cb (const void *pointer, void *data,
|
||||
struct t_config_option *option,
|
||||
const char *value)
|
||||
{
|
||||
char *error;
|
||||
long port;
|
||||
struct t_relay_server *ptr_server;
|
||||
int number, port;
|
||||
long long new_port;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) option;
|
||||
|
||||
error = NULL;
|
||||
port = strtol (value, &error, 10);
|
||||
ptr_server = relay_server_search_port ((int)port);
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
/* relative value: add to the current port */
|
||||
if (!weechat_util_parse_int (value + 2, 10, &number))
|
||||
return 1;
|
||||
new_port = (long long)weechat_config_integer (option) + number;
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
/* relative value: subtract from the current port */
|
||||
if (!weechat_util_parse_int (value + 2, 10, &number))
|
||||
return 1;
|
||||
new_port = (long long)weechat_config_integer (option) - number;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* let WeeChat display the error if value is not a valid integer */
|
||||
if (!weechat_util_parse_int (value, 10, &port))
|
||||
return 1;
|
||||
new_port = port;
|
||||
}
|
||||
|
||||
/* if port is out of range, let WeeChat validate and display the error */
|
||||
if ((new_port < 0) || (new_port > 65535))
|
||||
return 1;
|
||||
|
||||
ptr_server = relay_server_search_port ((int)new_port);
|
||||
if (ptr_server)
|
||||
{
|
||||
weechat_printf (NULL, _("%s%s: error: port \"%d\" is already used"),
|
||||
weechat_prefix ("error"),
|
||||
RELAY_PLUGIN_NAME, (int)port);
|
||||
RELAY_PLUGIN_NAME, (int)new_port);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -866,9 +889,8 @@ relay_config_create_option_port_path (const void *pointer, void *data,
|
||||
const char *option_name,
|
||||
const char *value)
|
||||
{
|
||||
int rc, protocol_number, ipv4, ipv6, tls, unix_socket;
|
||||
char *error, *protocol, *protocol_args;
|
||||
long port;
|
||||
int rc, protocol_number, ipv4, ipv6, tls, unix_socket, port;
|
||||
char *protocol, *protocol_args;
|
||||
struct t_relay_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -925,9 +947,10 @@ relay_config_create_option_port_path (const void *pointer, void *data,
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
port = strtol (value, &error, 10);
|
||||
ptr_server = relay_server_search_port ((int)port);
|
||||
if (weechat_util_parse_int (value, 10, &port))
|
||||
ptr_server = relay_server_search_port (port);
|
||||
else
|
||||
ptr_server = NULL;
|
||||
}
|
||||
if (ptr_server)
|
||||
{
|
||||
|
||||
@@ -212,7 +212,6 @@ relay_http_get_param_long (struct t_relay_http_request *request,
|
||||
long *value)
|
||||
{
|
||||
const char *ptr_value;
|
||||
char *error;
|
||||
long number;
|
||||
|
||||
if (!value)
|
||||
@@ -223,8 +222,7 @@ relay_http_get_param_long (struct t_relay_http_request *request,
|
||||
return 0;
|
||||
if (ptr_value)
|
||||
{
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_long (ptr_value, 10, &number))
|
||||
return 0;
|
||||
*value = number;
|
||||
}
|
||||
@@ -411,10 +409,9 @@ relay_http_parse_header (struct t_relay_http_request *request,
|
||||
const char *header,
|
||||
int ws_deflate_allowed)
|
||||
{
|
||||
char *name, *name_lower, *error, **items;
|
||||
char *name, *name_lower, **items;
|
||||
const char *pos, *existing_value, *ptr_value;
|
||||
int i, num_items;
|
||||
long number;
|
||||
int i, number, num_items;
|
||||
|
||||
weechat_string_dyn_concat (request->raw, header, -1);
|
||||
weechat_string_dyn_concat (request->raw, "\n", -1);
|
||||
@@ -475,10 +472,8 @@ relay_http_parse_header (struct t_relay_http_request *request,
|
||||
/* if header is "Content-Length", save the length */
|
||||
if (strcmp (name_lower, "content-length") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0])
|
||||
request->content_length = (int)number;
|
||||
if (weechat_util_parse_int (ptr_value, 10, &number))
|
||||
request->content_length = number;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -606,7 +601,7 @@ relay_http_get_auth_status (struct t_relay_client *client)
|
||||
{
|
||||
const char *auth, *sec_websocket_protocol, *client_totp, *pos;
|
||||
char *relay_password, *totp_secret, *info_totp_args, *info_totp;
|
||||
char *user_pass, **protocol_array, *error;
|
||||
char *user_pass, **protocol_array;
|
||||
int rc, i, length, protocol_count, use_base64url, totp_ok;
|
||||
long number;
|
||||
|
||||
@@ -626,8 +621,8 @@ relay_http_get_auth_status (struct t_relay_client *client)
|
||||
rc = -4;
|
||||
goto end;
|
||||
}
|
||||
number = strtol (client_totp, &error, 10);
|
||||
if (!error || error[0] || (number < 0) || (number > 999999))
|
||||
if (!weechat_util_parse_long (client_totp, 10, &number)
|
||||
|| (number < 0) || (number > 999999))
|
||||
{
|
||||
rc = -4;
|
||||
goto end;
|
||||
@@ -1496,8 +1491,8 @@ relay_http_parse_response_code (struct t_relay_http_response *response,
|
||||
const char *response_code)
|
||||
{
|
||||
const char *pos, *pos2;
|
||||
char *error, *return_code;
|
||||
long value;
|
||||
char *return_code;
|
||||
int value;
|
||||
|
||||
if (!response)
|
||||
return 0;
|
||||
@@ -1528,10 +1523,8 @@ relay_http_parse_response_code (struct t_relay_http_response *response,
|
||||
if (!return_code)
|
||||
goto error;
|
||||
|
||||
error = NULL;
|
||||
value = strtol (return_code, &error, 10);
|
||||
if (error && !error[0])
|
||||
response->return_code = (int)value;
|
||||
if (weechat_util_parse_int (return_code, 10, &value))
|
||||
response->return_code = value;
|
||||
|
||||
free (return_code);
|
||||
|
||||
@@ -1566,9 +1559,9 @@ int
|
||||
relay_http_parse_response_header (struct t_relay_http_response *response,
|
||||
const char *header)
|
||||
{
|
||||
char *name, *name_lower, *error;
|
||||
char *name, *name_lower;
|
||||
const char *pos, *ptr_value;
|
||||
long number;
|
||||
int number;
|
||||
|
||||
/* empty line => end of headers */
|
||||
if (!header || !header[0])
|
||||
@@ -1608,10 +1601,8 @@ relay_http_parse_response_header (struct t_relay_http_response *response,
|
||||
/* if header is "Content-Length", save the length */
|
||||
if (strcmp (name_lower, "content-length") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0])
|
||||
response->content_length = (int)number;
|
||||
if (weechat_util_parse_int (ptr_value, 10, &number))
|
||||
response->content_length = number;
|
||||
}
|
||||
|
||||
free (name);
|
||||
|
||||
@@ -203,7 +203,7 @@ relay_remote_parse_url (const char *url,
|
||||
int *tls, char **address, int *port)
|
||||
{
|
||||
const char *ptr_url, *pos;
|
||||
char *str_port, *error;
|
||||
char *str_port;
|
||||
long number;
|
||||
|
||||
if (tls)
|
||||
@@ -270,12 +270,11 @@ relay_remote_parse_url (const char *url,
|
||||
weechat_strndup (ptr_url, pos - ptr_url) : strdup (ptr_url);
|
||||
if (!str_port)
|
||||
return 0;
|
||||
error = NULL;
|
||||
number = strtol (str_port, &error, 10);
|
||||
if (error && !error[0] && (number >= 0) && (number <= 65535))
|
||||
if (weechat_util_parse_long (str_port, 10, &number)
|
||||
&& (number >= 0) && (number <= 65535))
|
||||
{
|
||||
if (port)
|
||||
*port = number;
|
||||
*port = (int)number;
|
||||
free (str_port);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -306,9 +306,8 @@ relay_websocket_parse_extensions (const char *extensions,
|
||||
struct t_relay_websocket_deflate *ws_deflate,
|
||||
int ws_deflate_allowed)
|
||||
{
|
||||
char **exts, **params, **items, *error;
|
||||
int i, j, num_exts, num_params, num_items;
|
||||
long number;
|
||||
char **exts, **params, **items;
|
||||
int i, j, number, num_exts, num_params, num_items;
|
||||
|
||||
if (!extensions || !ws_deflate)
|
||||
return;
|
||||
@@ -351,9 +350,7 @@ relay_websocket_parse_extensions (const char *extensions,
|
||||
number = 15;
|
||||
if (num_items >= 2)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (items[1], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (items[1], 10, &number))
|
||||
{
|
||||
if (number < 8)
|
||||
number = 8;
|
||||
@@ -368,12 +365,12 @@ relay_websocket_parse_extensions (const char *extensions,
|
||||
if (strcmp (items[0], "server_max_window_bits") == 0)
|
||||
{
|
||||
ws_deflate->server_max_window_bits_recv = 1;
|
||||
ws_deflate->window_bits_deflate = (int)number;
|
||||
ws_deflate->window_bits_deflate = number;
|
||||
}
|
||||
else
|
||||
{
|
||||
ws_deflate->client_max_window_bits_recv = 1;
|
||||
ws_deflate->window_bits_inflate = (int)number;
|
||||
ws_deflate->window_bits_inflate = number;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -362,7 +362,7 @@ relay_weechat_msg_add_hdata_path (struct t_relay_weechat_msg *msg,
|
||||
{
|
||||
int num_added, i, j, count, count_all, var_type, array_size, max_array_size;
|
||||
int length;
|
||||
char *pos, *pos2, *str_count, *error, *name;
|
||||
char *pos, *pos2, *str_count, *name;
|
||||
void *sub_pointer;
|
||||
struct t_hdata *sub_hdata;
|
||||
const char *sub_hdata_name;
|
||||
@@ -384,9 +384,7 @@ relay_weechat_msg_add_hdata_path (struct t_relay_weechat_msg *msg,
|
||||
count_all = 1;
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
count = (int)strtol (str_count, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (str_count, 10, &count))
|
||||
{
|
||||
if (count > 0)
|
||||
count--;
|
||||
|
||||
@@ -684,7 +684,7 @@ RELAY_WEECHAT_PROTOCOL_CALLBACK(completion)
|
||||
struct t_gui_completion_word *word;
|
||||
struct t_arraylist *ptr_list;
|
||||
struct t_relay_weechat_msg *msg;
|
||||
char *error, *pos_data;
|
||||
char *pos_data;
|
||||
int i, position, length_data, context, pos_start, size;
|
||||
|
||||
RELAY_WEECHAT_PROTOCOL_MIN_ARGS(0);
|
||||
@@ -709,9 +709,7 @@ RELAY_WEECHAT_PROTOCOL_CALLBACK(completion)
|
||||
goto error;
|
||||
}
|
||||
|
||||
error = NULL;
|
||||
position = (int)strtol (argv[1], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (argv[1], 10, &position))
|
||||
goto error;
|
||||
|
||||
pos_data = strchr (argv_eol[1], ' ');
|
||||
|
||||
Reference in New Issue
Block a user