summaryrefslogtreecommitdiff
path: root/src/eir.c
diff options
context:
space:
mode:
authorSyam Sidhardhan <s.syam@samsung.com>2012-04-16 18:31:37 +0530
committerJohan Hedberg <johan.hedberg@intel.com>2012-04-16 22:55:42 +0300
commit3424dc81ef8c5c83a78cf3e0cd6c38f075f44fce (patch)
treede71b4f8a0c391017b51750c20724f824eeebec2 /src/eir.c
parent4b6c1b7311f4964a956ef809ffb94262c69613c4 (diff)
downloadbluez-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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/eir.c b/src/eir.c
index 492af0d4f..3b2db9e06 100644
--- a/src/eir.c
+++ b/src/eir.c
@@ -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)