From 26fbdc19f5f603030122a9aeceda8fbdd85f8e8d Mon Sep 17 00:00:00 2001 From: Matthias Ringwald <matthias@ringwald.ch> Date: Thu, 21 Jan 2021 10:51:47 +0100 Subject: [PATCH] avdtp_initiator: avoid access to variable set by higher layer --- src/classic/avdtp_initiator.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/classic/avdtp_initiator.c b/src/classic/avdtp_initiator.c index bc875d05d..357696f1b 100644 --- a/src/classic/avdtp_initiator.c +++ b/src/classic/avdtp_initiator.c @@ -178,14 +178,16 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t *connection, uint8_t log_info("configured remote seid %d", stream_endpoint->remote_sep.seid); if ((stream_endpoint->remote_configuration_bitmap & (1 << AVDTP_MEDIA_CODEC)) != 0) { - // copy media codec configuration for known codecs - if (stream_endpoint->media_codec_type != AVDTP_CODEC_NON_A2DP) { - btstack_assert( - stream_endpoint->remote_configuration.media_codec.media_codec_information_len == - stream_endpoint->media_codec_configuration_len); + // copy media codec configuration if length correct + if (stream_endpoint->remote_configuration.media_codec.media_codec_information_len != + stream_endpoint->media_codec_configuration_len){ (void) memcpy(stream_endpoint->media_codec_configuration_info, stream_endpoint->remote_configuration.media_codec.media_codec_information, stream_endpoint->media_codec_configuration_len); + } else { + log_error("Remote codec info len %u !=> local buffer len %u", stream_endpoint->remote_configuration.media_codec.media_codec_information_len, + stream_endpoint->media_codec_configuration_len); + (void) memset(stream_endpoint->media_codec_configuration_info, 0, stream_endpoint->media_codec_configuration_len); } avdtp_signaling_emit_configuration(stream_endpoint, connection->avdtp_cid, 0, &sep.configuration, (1 << AVDTP_MEDIA_CODEC));