Skip to content
Snippets Groups Projects
Verified Commit 87ea7769 authored by Filip Matusiak's avatar Filip Matusiak Committed by IOPSYS Dev
Browse files

scan: fix undefined behaviour of strtol when parsing scanres

parent 398ae82f
No related branches found
No related tags found
1 merge request!449scan: Fix possibly undefined behaviour of strtol when parsing scanres
Pipeline #206068 passed
......@@ -322,7 +322,7 @@ int add_scanres_element(struct controller *c,
uint8_t len = 0, ssidlen;
uint8_t info = 0x00;
uint8_t bw_len;
char *endptr = NULL;
char buf[6] = {0};
nbr = calloc(1, sizeof(*nbr));
if (!nbr)
......@@ -341,11 +341,19 @@ int add_scanres_element(struct controller *c,
nbr->rssi = rcpi_to_rssi(tv_data[offset]);
offset++;
bw_len = tv_data[offset++];
errno = 0;
nbr->bw = strtol((char *)&tv_data[offset], &endptr, 10);
if (errno || *endptr != '\0') {
warn("%s: Error parsing bw value: %s\n",
__func__, (char *)&tv_data[offset]);
if (bw_len > sizeof(buf)) {
warn("%s: bw_len %d is too long\n", __func__, bw_len);
goto error;
} else {
char *endptr = NULL;
errno = 0;
memcpy(buf, &tv_data[offset], bw_len);
nbr->bw = strtol(buf, &endptr, 10);
if (errno || *endptr != '\0') {
warn("%s: Error parsing bw value: %s\n",
__func__, (char *)&tv_data[offset]);
}
}
offset += bw_len;
info = tv_data[offset];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment