Skip to content

Commit e44e7ce

Browse files
author
Jiang Jiang Jian
committed
Merge branch 'bugfix/fix_tls1_3_dynamic_buffer_build_v5.5' into 'release/v5.5'
fix(mbedtls): Fix failing build with TLS1.3 only and dynamic buffer enabled (v5.5) See merge request espressif/esp-idf!39879
2 parents 4684d3d + 08d78dc commit e44e7ce

File tree

4 files changed

+35
-4
lines changed

4 files changed

+35
-4
lines changed

components/esp-tls/esp_tls_mbedtls.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,9 @@ esp_err_t set_client_config(const char *hostname, size_t hostlen, esp_tls_cfg_t
850850
#ifdef CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS
851851
ESP_LOGD(TAG, "Enabling client-side tls session ticket support");
852852
mbedtls_ssl_conf_session_tickets(&tls->conf, MBEDTLS_SSL_SESSION_TICKETS_ENABLED);
853+
#ifdef CONFIG_MBEDTLS_SSL_RENEGOTIATION
853854
mbedtls_ssl_conf_renegotiation(&tls->conf, MBEDTLS_SSL_RENEGOTIATION_ENABLED);
855+
#endif /* CONFIG_MBEDTLS_SSL_RENEGOTIATION */
854856
#endif /* CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS */
855857

856858
#if CONFIG_MBEDTLS_SSL_PROTO_TLS1_3

components/mbedtls/port/dynamic/esp_ssl_tls.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ static int ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake )
9292
#if defined(MBEDTLS_DHM_C)
9393
mbedtls_dhm_init( &handshake->dhm_ctx );
9494
#endif
95-
#if defined(MBEDTLS_ECDH_C)
95+
#if defined(MBEDTLS_ECDH_C) && \
96+
defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED)
9697
mbedtls_ecdh_init( &handshake->ecdh_ctx );
9798
#endif
9899
#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
@@ -121,9 +122,11 @@ static int ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake )
121122

122123
static int ssl_handshake_init( mbedtls_ssl_context *ssl )
123124
{
125+
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
124126
/* Clear old handshake information if present */
125127
if( ssl->transform_negotiate )
126128
mbedtls_ssl_transform_free( ssl->transform_negotiate );
129+
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
127130
if( ssl->session_negotiate )
128131
mbedtls_ssl_session_free( ssl->session_negotiate );
129132
if( ssl->handshake )
@@ -133,10 +136,12 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl )
133136
* Either the pointers are now NULL or cleared properly and can be freed.
134137
* Now allocate missing structures.
135138
*/
139+
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
136140
if( ssl->transform_negotiate == NULL )
137141
{
138142
ssl->transform_negotiate = mbedtls_calloc( 1, sizeof(mbedtls_ssl_transform) );
139143
}
144+
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
140145

141146
if( ssl->session_negotiate == NULL )
142147
{
@@ -156,25 +161,32 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl )
156161

157162
/* All pointers should exist and can be directly freed without issue */
158163
if( ssl->handshake == NULL ||
164+
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
159165
ssl->transform_negotiate == NULL ||
166+
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
160167
ssl->session_negotiate == NULL )
161168
{
162169
ESP_LOGD(TAG, "alloc() of ssl sub-contexts failed");
163170

164171
mbedtls_free( ssl->handshake );
165-
mbedtls_free( ssl->transform_negotiate );
166-
mbedtls_free( ssl->session_negotiate );
167-
168172
ssl->handshake = NULL;
173+
174+
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
175+
mbedtls_free( ssl->transform_negotiate );
169176
ssl->transform_negotiate = NULL;
177+
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
178+
179+
mbedtls_free( ssl->session_negotiate );
170180
ssl->session_negotiate = NULL;
171181

172182
return( MBEDTLS_ERR_SSL_ALLOC_FAILED );
173183
}
174184

175185
/* Initialize structures */
176186
mbedtls_ssl_session_init( ssl->session_negotiate );
187+
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
177188
mbedtls_ssl_transform_init( ssl->transform_negotiate );
189+
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
178190
int ret = ssl_handshake_params_init( ssl->handshake );
179191
if (ret != 0) {
180192
return ret;

examples/protocols/https_request/pytest_https_request.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def test_examples_protocol_https_request_cli_session_tickets(dut: Dut) -> None:
130130
'config',
131131
[
132132
'ssldyn_tls1_3',
133+
'ssldyn_tls1_3_only',
133134
],
134135
indirect=True,
135136
)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CONFIG_SPIRAM=y
2+
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y
3+
CONFIG_EXAMPLE_CONNECT_ETHERNET=y
4+
CONFIG_EXAMPLE_CONNECT_WIFI=n
5+
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
6+
CONFIG_EXAMPLE_ETH_PHY_IP101=y
7+
CONFIG_EXAMPLE_ETH_MDC_GPIO=23
8+
CONFIG_EXAMPLE_ETH_MDIO_GPIO=18
9+
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=5
10+
CONFIG_EXAMPLE_ETH_PHY_ADDR=1
11+
CONFIG_MBEDTLS_DYNAMIC_BUFFER=y
12+
CONFIG_EXAMPLE_SSL_PROTO_TLS1_3_CLIENT=y
13+
CONFIG_EXAMPLE_CLIENT_SESSION_TICKETS=y
14+
CONFIG_EXAMPLE_LOCAL_SERVER_URL="FROM_STDIN"
15+
CONFIG_EXAMPLE_LOCAL_SERVER_URL_FROM_STDIN=y
16+
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=n

0 commit comments

Comments
 (0)