2011-10-04 02:56:00

by Lucas De Marchi

[permalink] [raw]
Subject: [PATCH] AVRCP: fix loop over number of application settings

---

Hi, Luiz,

I applied this patch on top of yours. If you are able to test the "set_player_value"
at UPF, please apply this patch first.


Regards,

audio/avrcp.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/audio/avrcp.c b/audio/avrcp.c
index cfdb313..6969fac 100644
--- a/audio/avrcp.c
+++ b/audio/avrcp.c
@@ -719,6 +719,7 @@ static uint8_t avrcp_handle_set_player_value(struct avrcp_player *player,
if (len <= 3)
goto err;

+ DBG("len %u", len);
len = 0;

/*
@@ -728,13 +729,14 @@ static uint8_t avrcp_handle_set_player_value(struct avrcp_player *player,
* attribute is valid, we respond with no parameters. Otherwise an
* E_INVALID_PARAM is sent.
*/
- for (i = 1; i < pdu->params[0]; i += 2) {
+ for (i = 1; i < (2 * pdu->params[0] + 1U); i += 2) {
uint8_t attr = pdu->params[i];
uint8_t val = pdu->params[i + 1];

if (player_set_attribute(player, attr, val) < 0)
continue;

+ DBG("set attr %u val %u", attr, val);
len++;
}

--
1.7.6.4



2011-10-05 15:30:04

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH] AVRCP: fix loop over number of application settings

Hi Lucas,

On Tue, Oct 4, 2011 at 5:56 AM, Lucas De Marchi
<[email protected]> wrote:
> ---
>
> Hi, Luiz,
>
> I applied this patch on top of yours. If you are able to test the "set_player_value"
> at UPF, please apply this patch first.
>
>
> Regards,
>
> ?audio/avrcp.c | ? ?4 +++-
> ?1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/audio/avrcp.c b/audio/avrcp.c
> index cfdb313..6969fac 100644
> --- a/audio/avrcp.c
> +++ b/audio/avrcp.c
> @@ -719,6 +719,7 @@ static uint8_t avrcp_handle_set_player_value(struct avrcp_player *player,
> ? ? ? ?if (len <= 3)
> ? ? ? ? ? ? ? ?goto err;
>
> + ? ? ? DBG("len %u", len);
> ? ? ? ?len = 0;
>
> ? ? ? ?/*
> @@ -728,13 +729,14 @@ static uint8_t avrcp_handle_set_player_value(struct avrcp_player *player,
> ? ? ? ? * attribute is valid, we respond with no parameters. Otherwise an
> ? ? ? ? * E_INVALID_PARAM is sent.
> ? ? ? ? */
> - ? ? ? for (i = 1; i < pdu->params[0]; i += 2) {
> + ? ? ? for (i = 1; i < (2 * pdu->params[0] + 1U); i += 2) {
> ? ? ? ? ? ? ? ?uint8_t attr = pdu->params[i];
> ? ? ? ? ? ? ? ?uint8_t val = pdu->params[i + 1];
>
> ? ? ? ? ? ? ? ?if (player_set_attribute(player, attr, val) < 0)
> ? ? ? ? ? ? ? ? ? ? ? ?continue;
>
> + ? ? ? ? ? ? ? DBG("set attr %u val %u", attr, val);
> ? ? ? ? ? ? ? ?len++;
> ? ? ? ?}

Maybe we can have an auxiliary pointer to the current params, e.g.
uint8_t *param = &pdu->params[1] and then we increment the actual
pointer without messing around with i which is the number of
attributes.

--
Luiz Augusto von Dentz

2011-10-04 18:59:11

by Lucas De Marchi

[permalink] [raw]
Subject: Re: [PATCH] AVRCP: fix loop over number of application settings

Hi

On Mon, Oct 3, 2011 at 11:56 PM, Lucas De Marchi
<[email protected]> wrote:
> ---
>
> Hi, Luiz,
>
> I applied this patch on top of yours. If you are able to test the "set_player_value"
> at UPF, please apply this patch first.
>
>
> Regards,
>
> ?audio/avrcp.c | ? ?4 +++-
> ?1 files changed, 3 insertions(+), 1 deletions(-)


Johan, please do not apply this patch. I'll provide another one later.

regards,
Lucas De Marchi