summaryrefslogtreecommitdiffstats
path: root/audio/unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/unix.c')
-rw-r--r--audio/unix.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/audio/unix.c b/audio/unix.c
index e455c4e3..1487395a 100644
--- a/audio/unix.c
+++ b/audio/unix.c
@@ -387,17 +387,19 @@ static int a2dp_append_codec(struct bt_get_capabilities_rsp *rsp,
{
struct avdtp_media_codec_capability *codec_cap = (void *) cap->data;
codec_capabilities_t *codec = (void *) rsp + rsp->h.length;
- int space_left = BT_SUGGESTED_BUFFER_SIZE - rsp->h.length;
+ size_t space_left;
- if (space_left <= 0)
+ if (rsp->h.length > BT_SUGGESTED_BUFFER_SIZE)
return -ENOMEM;
+ space_left = BT_SUGGESTED_BUFFER_SIZE - rsp->h.length;
+
/* endianess prevent direct cast */
if (codec_cap->media_codec_type == A2DP_CODEC_SBC) {
struct sbc_codec_cap *sbc_cap = (void *) codec_cap;
sbc_capabilities_t *sbc = (void *) codec;
- if ((space_left - (int) sizeof(sbc_capabilities_t)) < 0)
+ if (space_left < sizeof(sbc_capabilities_t))
return -ENOMEM;
codec->length = sizeof(sbc_capabilities_t);
@@ -413,7 +415,7 @@ static int a2dp_append_codec(struct bt_get_capabilities_rsp *rsp,
struct mpeg_codec_cap *mpeg_cap = (void *) codec_cap;
mpeg_capabilities_t *mpeg = (void *) codec;
- if ((space_left - (int) sizeof(mpeg_capabilities_t)) < 0)
+ if (space_left < sizeof(mpeg_capabilities_t))
return -ENOMEM;
codec->length = sizeof(mpeg_capabilities_t);
@@ -425,12 +427,12 @@ static int a2dp_append_codec(struct bt_get_capabilities_rsp *rsp,
mpeg->mpf = mpeg_cap->mpf;
mpeg->bitrate = mpeg_cap->bitrate;
} else {
- int codec_length;
+ size_t codec_length;
codec_length = cap->length - (sizeof(struct avdtp_service_capability)
+ sizeof(struct avdtp_media_codec_capability));
- if ((space_left - codec_length - (int) sizeof(codec_capabilities_t)) < 0)
+ if (space_left < codec_length + sizeof(codec_capabilities_t))
return -ENOMEM;
codec->length = codec_length + sizeof(codec_capabilities_t);