Check return values of sscanf()

Failing to check that a call to 'sscanf' actually writes to an output
variable can lead to unexpected behavior at reading time.
This commit is contained in:
Mingjie Shen 2024-03-23 22:26:43 -04:00 committed by Martin Lund
parent ed4ac0c797
commit 6720da3b88
2 changed files with 10 additions and 2 deletions

View file

@ -163,7 +163,11 @@ void line_pulse_duration_option_parse(const char *arg)
{
char keyname[11];
unsigned int value;
sscanf(token, "%10[^=]=%d", keyname, &value);
if (sscanf(token, "%10[^=]=%d", keyname, &value) != 2)
{
token_found = false;
}
if (!strcmp(keyname, "DTR"))
{

View file

@ -57,7 +57,11 @@ void rs485_parse_config(const char *arg)
{
char keyname[31];
unsigned int value;
sscanf(token, "%30[^=]=%d", keyname, &value);
if (sscanf(token, "%30[^=]=%d", keyname, &value) != 2)
{
token_found = false;
}
if (!strcmp(keyname, "RTS_ON_SEND"))
{