OSDN Git Service

AVRCP: Fix not parsing player name properly
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 7 Mar 2013 15:11:56 +0000 (17:11 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 7 Mar 2013 15:16:05 +0000 (17:16 +0200)
Player name length field is 2 bytes long not 1.

profiles/audio/avrcp.c

index 97961da..78c8479 100644 (file)
@@ -2058,7 +2058,7 @@ static void avrcp_parse_media_player_item(struct avrcp *session,
 {
        struct avrcp_player *player = session->player;
        struct media_player *mp = player->user_data;
-       uint16_t id;
+       uint16_t id, namelen;
        uint32_t subtype;
        const char *curval, *strval;
        char name[255];
@@ -2087,8 +2087,11 @@ static void avrcp_parse_media_player_item(struct avrcp *session,
 
        avrcp_player_parse_features(player, &operands[8]);
 
-       if (operands[26] != 0) {
-               memcpy(name, &operands[27], operands[26]);
+       namelen = bt_get_be16(&operands[26]);
+       if (namelen > 0) {
+               namelen = MIN(namelen, sizeof(name) - 1);
+               memcpy(name, &operands[28], namelen);
+               name[namelen] = '\0';
                media_player_set_name(mp, name);
        }