3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-12-22 21:22:37 +01:00

ie: fix ie_parse_data_rates to handle NULL

The code was partially there to handle NULL IEs but not
quite. If NULL IEs are passed in base the data rate totally
on the basic rate RSSI table.
This commit is contained in:
James Prestwood 2021-05-07 13:26:14 -07:00 committed by Denis Kenzior
parent f3d662db74
commit 7b26a87d7a

View File

@ -1688,14 +1688,16 @@ static int ie_parse_supported_rates(struct ie_tlv_iter *supp_rates_iter,
max_rate = map->rate; max_rate = map->rate;
} }
/* Find highest rate in Supported Rates IE */ if (supp_rates_iter) {
rates = ie_tlv_iter_get_data(supp_rates_iter); /* Find highest rate in Supported Rates IE */
rates = ie_tlv_iter_get_data(supp_rates_iter);
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
uint8_t r = rates[i] & 0x7f; uint8_t r = rates[i] & 0x7f;
if (r <= max_rate && r > highest) if (r <= max_rate && r > highest)
highest = r; highest = r;
}
} }
/* Find highest rate in Extended Supported Rates IE */ /* Find highest rate in Extended Supported Rates IE */
@ -1711,7 +1713,10 @@ static int ie_parse_supported_rates(struct ie_tlv_iter *supp_rates_iter,
} }
} }
*data_rate = (highest / 2) * 1000000; if (highest)
*data_rate = (highest / 2) * 1000000;
else
*data_rate = (max_rate / 2) * 1000000;
return 0; return 0;
} }