From f435b5843e0040f7c65cbba0088094efb0912823 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 18 Jan 2012 13:36:14 +0200 Subject: [PATCH] obexd: fix parsing of apparam on pbap driver Both hdr and size need to be updated otherwise no parameters will be parsed. --- obexd/client/pbap.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/obexd/client/pbap.c b/obexd/client/pbap.c index 9e9eb0573..8efa568c1 100644 --- a/obexd/client/pbap.c +++ b/obexd/client/pbap.c @@ -364,8 +364,8 @@ static void read_return_apparam(struct obc_session *session, { struct obc_transfer *transfer = obc_session_get_transfer(session); struct obc_transfer_params params; - unsigned char *buf; - size_t size = 0; + struct apparam_hdr *hdr; + size_t size; *phone_book_size = 0; *new_missed_calls = 0; @@ -376,9 +376,10 @@ static void read_return_apparam(struct obc_session *session, if (params.size < APPARAM_HDR_SIZE) return; - while (size > APPARAM_HDR_SIZE) { - struct apparam_hdr *hdr = (struct apparam_hdr *) params.data; + hdr = (struct apparam_hdr *) params.data; + size = params.size; + while (size > APPARAM_HDR_SIZE) { if (hdr->len > size - APPARAM_HDR_SIZE) { error("Unexpected PBAP pullphonebook app" " length, tag %d, len %d", @@ -404,8 +405,8 @@ static void read_return_apparam(struct obc_session *session, hdr->tag, hdr->len); } - buf += APPARAM_HDR_SIZE + hdr->len; size -= APPARAM_HDR_SIZE + hdr->len; + hdr += APPARAM_HDR_SIZE + hdr->len; } } -- 2.47.3