mirror of
https://gitlab.com/mobian1/eg25-manager.git
synced 2025-08-29 23:32:14 +02:00
at.c: use snprintf(3)
snprintf(3) is preferred over insecure sprintf(3) in order to avoid buffer overrun vulnerabilities.
This commit is contained in:
16
src/at.c
16
src/at.c
@@ -58,15 +58,21 @@ gboolean at_send_command(struct EG25Manager *manager)
|
|||||||
|
|
||||||
/* Send AT command */
|
/* Send AT command */
|
||||||
if (at_cmd->subcmd == NULL && at_cmd->value == NULL && at_cmd->expected == NULL)
|
if (at_cmd->subcmd == NULL && at_cmd->value == NULL && at_cmd->expected == NULL)
|
||||||
len = sprintf(command, "AT+%s\r\n", at_cmd->cmd);
|
len = snprintf(command, sizeof(command), "AT+%s\r\n", at_cmd->cmd);
|
||||||
else if (at_cmd->subcmd == NULL && at_cmd->value == NULL)
|
else if (at_cmd->subcmd == NULL && at_cmd->value == NULL)
|
||||||
len = sprintf(command, "AT+%s?\r\n", at_cmd->cmd);
|
len = snprintf(command, sizeof(command), "AT+%s?\r\n", at_cmd->cmd);
|
||||||
else if (at_cmd->subcmd == NULL && at_cmd->value)
|
else if (at_cmd->subcmd == NULL && at_cmd->value)
|
||||||
len = sprintf(command, "AT+%s=%s\r\n", at_cmd->cmd, at_cmd->value);
|
len = snprintf(command, sizeof(command),"AT+%s=%s\r\n", at_cmd->cmd, at_cmd->value);
|
||||||
else if (at_cmd->subcmd && at_cmd->value == NULL)
|
else if (at_cmd->subcmd && at_cmd->value == NULL)
|
||||||
len = sprintf(command, "AT+%s=\"%s\"\r\n", at_cmd->cmd, at_cmd->subcmd);
|
len = snprintf(command, sizeof(command), "AT+%s=\"%s\"\r\n", at_cmd->cmd, at_cmd->subcmd);
|
||||||
else if (at_cmd->subcmd && at_cmd->value)
|
else if (at_cmd->subcmd && at_cmd->value)
|
||||||
len = sprintf(command, "AT+%s=\"%s\",%s\r\n", at_cmd->cmd, at_cmd->subcmd, at_cmd->value);
|
len = snprintf(command, sizeof(command), "AT+%s=\"%s\",%s\r\n", at_cmd->cmd, at_cmd->subcmd, at_cmd->value);
|
||||||
|
|
||||||
|
if (len < 0 || len >= sizeof(command)) {
|
||||||
|
g_warning("AT command does not fit into buffer\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
manager->at_callback = at_cmd->callback;
|
manager->at_callback = at_cmd->callback;
|
||||||
|
|
||||||
ret = write(manager->at_fd, command, len);
|
ret = write(manager->at_fd, command, len);
|
||||||
|
Reference in New Issue
Block a user