Rework rs485_parse_config()

Introduce proper sscanf() checks.
This commit is contained in:
Martin Lund 2024-04-14 11:21:26 +02:00
parent c4878a90d7
commit 9744fcafcf

View file

@ -57,17 +57,16 @@ void rs485_parse_config(const char *arg)
{
char keyname[31];
unsigned int value;
int match_count;
if (sscanf(token, "%30[^=]=%d", keyname, &value) != 2)
match_count = sscanf(token, "%30[^=]=%d", keyname, &value);
if (match_count == 2)
{
token_found = false;
}
if (!strcmp(keyname, "RTS_ON_SEND"))
{
if (value)
{
/* Set logical level for RTS pin equal to 1 when sending */
option.rs485_config_flags |= SER_RS485_RTS_ON_SEND;
}
@ -100,7 +99,10 @@ void rs485_parse_config(const char *arg)
/* Set RTS delay after send */
option.rs485_delay_rts_after_send = value;
}
else if (!strcmp(keyname, "RX_DURING_TX"))
}
else if (match_count == 1)
{
if (!strcmp(keyname, "RX_DURING_TX"))
{
/* Receive data even while sending data */
option.rs485_config_flags |= SER_RS485_RX_DURING_TX;
@ -111,6 +113,11 @@ void rs485_parse_config(const char *arg)
token_found = false;
}
}
else
{
token_found = false;
}
}
free(buffer);
}