From eae77d7e49cec29ab06e1c132d9750cdef3d01b5 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Mon, 4 Dec 2023 15:55:33 -0500 Subject: [PATCH] shared/vcp: Fix comparison of values in different endianness Values received over the air are in Little Endian format so they first need to be converted to host endianness before comparing with other values. --- src/shared/vcp.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/shared/vcp.c b/src/shared/vcp.c index 06a22997a..5d163266b 100644 --- a/src/shared/vcp.c +++ b/src/shared/vcp.c @@ -709,13 +709,16 @@ static uint8_t vocs_set_vol_offset(struct bt_vocs *vocs, struct bt_vcp *vcp, return BT_ATT_ERROR_INVALID_CHANGE_COUNTER; } - if (req->set_vol_offset > VOCS_VOL_OFFSET_UPPER_LIMIT || - req->set_vol_offset < VOCS_VOL_OFFSET_LOWER_LIMIT) { + vstate->vol_offset = le16_to_cpu(req->set_vol_offset); + + if (vstate->vol_offset > VOCS_VOL_OFFSET_UPPER_LIMIT || + vstate->vol_offset < VOCS_VOL_OFFSET_LOWER_LIMIT) { DBG(vcp, "error: Value Out of Range"); return BT_ATT_ERROR_VALUE_OUT_OF_RANGE; } - vstate->vol_offset = le16_to_cpu(req->set_vol_offset); - vstate->counter = -~vstate->counter; /*Increment Change Counter*/ + + /* Increment Change Counter */ + vstate->counter = -~vstate->counter; gatt_db_attribute_notify(vdb->vocs->vos, (void *)vstate, sizeof(struct vol_offset_state), -- 2.47.3