Issue:
The COD value displayed via dbus during inquiry is wrong.
This is because of the incorrect return length of the eir_length(),
which leads to appending the COD at wrong location.
Analysis:
After appending the COD at the end of the eir data, we can see
there are some '00' present in the eir field length in the eir file.
XX:XX:XX:XX:XX:XX 07095359414D5043020A040B0312111F110C110E110311
0000000000000000000000040D000142
Fix:
Corrected the length calculation in eir_length(), which is determining,
which position the COD should append
size_t eir_length(uint8_t *eir, size_t maxlen)
{
uint8_t field_len;
- size_t parsed, length;
+ size_t parsed = 0, length = 0;
- for (parsed = 0, length = 0; parsed < maxlen - 1; parsed += field_len) {
+ while (parsed < maxlen - 1) {
field_len = eir[0];
if (field_len == 0)