diff options
author | Syam Sidhardhan <s.syam@samsung.com> | 2012-04-16 18:31:37 +0530 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2012-04-16 22:55:42 +0300 |
commit | 3424dc81ef8c5c83a78cf3e0cd6c38f075f44fce (patch) | |
tree | de71b4f8a0c391017b51750c20724f824eeebec2 /src/eir.c | |
parent | 4b6c1b7311f4964a956ef809ffb94262c69613c4 (diff) | |
download | bluez-3424dc81ef8c5c83a78cf3e0cd6c38f075f44fce.tar.gz |
eir: Fix incorrect eir_length() parsing
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
Diffstat (limited to 'src/eir.c')
-rw-r--r-- | src/eir.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -378,9 +378,9 @@ size_t eir_append_data(uint8_t *eir, size_t eir_len, uint8_t type, 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) |