Do not return a structure, use a return parameter

Signed-off-by: Johan Pascal <johan.pascal@belledonne-communications.com>
diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h
index 4805c67..1b4e163 100644
--- a/include/mbedtls/ssl.h
+++ b/include/mbedtls/ssl.h
@@ -3257,27 +3257,25 @@
                                          unsigned char *mki_value,
                                          uint16_t mki_len );
 /**
- * \brief          Get the negotiated DTLS-SRTP informations:
- *                 Protection profile and MKI value.
+ * \brief                  Get the negotiated DTLS-SRTP informations:
+ *                         Protection profile and MKI value.
  *
- * \warning        This function must be called after the handshake is
- *                 completed. The value returned by this function must
- *                 not be trusted or acted upon before the handshake completes.
+ * \warning                This function must be called after the handshake is
+ *                         completed. The value returned by this function must
+ *                         not be trusted or acted upon before the handshake completes.
  *
- * \param ssl      The SSL context to query.
- *
- * \return         The negotiated DTLS-SRTP informations:
- *                 - Protection profile in use.
- *                 A direct mapping of the iana defined value for protection
- *                 profile on an uint16_t.
- *                 http://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml
- *                 #MBEDTLS_TLS_SRTP_UNSET if the use of SRTP was not negotiated
- *                 or peer's Hello packet was not parsed yet.
- *                 - mki size and value (if size is > 0). These informations are valid only
- *                 if the protection profile returned is not MBEDTLS_TLS_SRTP_UNSET.
+ * \param ssl              The SSL context to query.
+ * \param dtls_srtp_info   The negotiated DTLS-SRTP informations:
+ *                         - Protection profile in use.
+ *                         A direct mapping of the iana defined value for protection
+ *                         profile on an uint16_t.
+                   http://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml
+ *                         #MBEDTLS_TLS_SRTP_UNSET if the use of SRTP was not negotiated
+ *                         or peer's Hello packet was not parsed yet.
+ *                         - mki size and value( if size is > 0 ).
  */
-mbedtls_dtls_srtp_info mbedtls_ssl_get_dtls_srtp_negotiation_result
-                                             ( const mbedtls_ssl_context *ssl );
+void mbedtls_ssl_get_dtls_srtp_negotiation_result( const mbedtls_ssl_context *ssl,
+                                                   mbedtls_dtls_srtp_info *dtls_srtp_info );
 #endif /* MBEDTLS_SSL_DTLS_SRTP */
 
 /**
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 0739b8f..8dec7f1 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4751,16 +4751,19 @@
     return( 0 );
 }
 
-mbedtls_dtls_srtp_info
-     mbedtls_ssl_get_dtls_srtp_negotiation_result( const mbedtls_ssl_context *ssl )
+void mbedtls_ssl_get_dtls_srtp_negotiation_result( const mbedtls_ssl_context *ssl, mbedtls_dtls_srtp_info *dtls_srtp_info )
 {
-    mbedtls_dtls_srtp_info ret = ssl->dtls_srtp_info;
-    /* discard the mki if there is no chosen profile */
-    if ( ret.chosen_dtls_srtp_profile == MBEDTLS_TLS_SRTP_UNSET )
+    dtls_srtp_info->chosen_dtls_srtp_profile = ssl->dtls_srtp_info.chosen_dtls_srtp_profile;
+    /* do not copy the mki value if there is no chosen profile */
+    if ( dtls_srtp_info->chosen_dtls_srtp_profile == MBEDTLS_TLS_SRTP_UNSET )
     {
-        ret.mki_len = 0;
+        dtls_srtp_info->mki_len = 0;
     }
-    return( ret );
+    else
+    {
+        dtls_srtp_info->mki_len = ssl->dtls_srtp_info.mki_len;
+        memcpy( dtls_srtp_info->mki_value, ssl->dtls_srtp_info.mki_value, ssl->dtls_srtp_info.mki_len );
+    }
 }
 #endif /* MBEDTLS_SSL_DTLS_SRTP */
 
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 2a60507..e78c087 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -2754,8 +2754,8 @@
     else if( opt.use_srtp != 0  )
     {
         size_t j = 0;
-        mbedtls_dtls_srtp_info dtls_srtp_negotiation_result =
-                        mbedtls_ssl_get_dtls_srtp_negotiation_result( &ssl );
+        mbedtls_dtls_srtp_info dtls_srtp_negotiation_result;
+        mbedtls_ssl_get_dtls_srtp_negotiation_result( &ssl, &dtls_srtp_negotiation_result );
 
         if( ( dtls_srtp_negotiation_result.chosen_dtls_srtp_profile
                                 == MBEDTLS_TLS_SRTP_UNSET ) )
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 81721bb..7383d88 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -3865,8 +3865,8 @@
     else if( opt.use_srtp != 0  )
     {
         size_t j = 0;
-        mbedtls_dtls_srtp_info dtls_srtp_negotiation_result =
-                        mbedtls_ssl_get_dtls_srtp_negotiation_result( &ssl );
+        mbedtls_dtls_srtp_info dtls_srtp_negotiation_result;
+        mbedtls_ssl_get_dtls_srtp_negotiation_result( &ssl, &dtls_srtp_negotiation_result );
 
         if( ( dtls_srtp_negotiation_result.chosen_dtls_srtp_profile
                                 == MBEDTLS_TLS_SRTP_UNSET ) )