Merge remote-tracking branch 'public/pr/2070' into development-proposed
diff --git a/ChangeLog b/ChangeLog
index 656688d..7fbf1ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,10 @@
      yet), and to existing functions in ECDH and SSL (currently only
      implemented client-side, for ECDHE-ECDSA ciphersuites in TLS 1.2,
      including client authentication).
+   * Fix wrong order of freeing in programs/ssl/ssl_server2 example
+     application leading to a memory leak in case both
+     MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE are set.
+     Fixes #2069.
 
 Bugfix
    * Fix a bug in the update function for SSL ticket keys which previously
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 4eac51f..efda65d 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -3146,6 +3146,8 @@
     mbedtls_ssl_cookie_free( &cookie_ctx );
 #endif
 
+    mbedtls_free( buf );
+
 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
 #if defined(MBEDTLS_MEMORY_DEBUG)
     mbedtls_memory_buffer_alloc_status();
@@ -3153,7 +3155,6 @@
     mbedtls_memory_buffer_alloc_free();
 #endif
 
-    mbedtls_free( buf );
     mbedtls_printf( " done.\n" );
 
 #if defined(_WIN32)