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));