Skip to content

Commit d9d4e80

Browse files
Merge pull request #3848 from rodrigo-dc/development
Fix build failure on gcc-11
2 parents e533ff7 + f06a614 commit d9d4e80

5 files changed

Lines changed: 22 additions & 11 deletions

File tree

ChangeLog.d/bugfix_3782.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Bugfix
2+
* Fix build failures on GCC 11. Fixes #3782.

library/cmac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ int mbedtls_cipher_cmac( const mbedtls_cipher_info_t *cipher_info,
420420
*/
421421
int mbedtls_aes_cmac_prf_128( const unsigned char *key, size_t key_length,
422422
const unsigned char *input, size_t in_len,
423-
unsigned char *output )
423+
unsigned char output[16] )
424424
{
425425
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
426426
const mbedtls_cipher_info_t *cipher_info;

library/ssl_tls.c

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -680,20 +680,20 @@ static void ssl_calc_finished_ssl( mbedtls_ssl_context *, unsigned char *, int )
680680
#endif
681681

682682
#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1)
683-
static void ssl_calc_verify_tls( const mbedtls_ssl_context *, unsigned char *, size_t * );
683+
static void ssl_calc_verify_tls( const mbedtls_ssl_context *, unsigned char*, size_t * );
684684
static void ssl_calc_finished_tls( mbedtls_ssl_context *, unsigned char *, int );
685685
#endif
686686

687687
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
688688
#if defined(MBEDTLS_SHA256_C)
689689
static void ssl_update_checksum_sha256( mbedtls_ssl_context *, const unsigned char *, size_t );
690-
static void ssl_calc_verify_tls_sha256( const mbedtls_ssl_context *,unsigned char *, size_t * );
690+
static void ssl_calc_verify_tls_sha256( const mbedtls_ssl_context *,unsigned char*, size_t * );
691691
static void ssl_calc_finished_tls_sha256( mbedtls_ssl_context *,unsigned char *, int );
692692
#endif
693693

694694
#if defined(MBEDTLS_SHA512_C)
695695
static void ssl_update_checksum_sha384( mbedtls_ssl_context *, const unsigned char *, size_t );
696-
static void ssl_calc_verify_tls_sha384( const mbedtls_ssl_context *, unsigned char *, size_t * );
696+
static void ssl_calc_verify_tls_sha384( const mbedtls_ssl_context *, unsigned char*, size_t * );
697697
static void ssl_calc_finished_tls_sha384( mbedtls_ssl_context *, unsigned char *, int );
698698
#endif
699699
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
@@ -1667,7 +1667,7 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl )
16671667

16681668
#if defined(MBEDTLS_SSL_PROTO_SSL3)
16691669
void ssl_calc_verify_ssl( const mbedtls_ssl_context *ssl,
1670-
unsigned char hash[36],
1670+
unsigned char *hash,
16711671
size_t *hlen )
16721672
{
16731673
mbedtls_md5_context md5;
@@ -1720,7 +1720,7 @@ void ssl_calc_verify_ssl( const mbedtls_ssl_context *ssl,
17201720

17211721
#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1)
17221722
void ssl_calc_verify_tls( const mbedtls_ssl_context *ssl,
1723-
unsigned char hash[36],
1723+
unsigned char *hash,
17241724
size_t *hlen )
17251725
{
17261726
mbedtls_md5_context md5;
@@ -1752,7 +1752,7 @@ void ssl_calc_verify_tls( const mbedtls_ssl_context *ssl,
17521752
#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
17531753
#if defined(MBEDTLS_SHA256_C)
17541754
void ssl_calc_verify_tls_sha256( const mbedtls_ssl_context *ssl,
1755-
unsigned char hash[32],
1755+
unsigned char *hash,
17561756
size_t *hlen )
17571757
{
17581758
#if defined(MBEDTLS_USE_PSA_CRYPTO)
@@ -1801,7 +1801,7 @@ void ssl_calc_verify_tls_sha256( const mbedtls_ssl_context *ssl,
18011801

18021802
#if defined(MBEDTLS_SHA512_C)
18031803
void ssl_calc_verify_tls_sha384( const mbedtls_ssl_context *ssl,
1804-
unsigned char hash[48],
1804+
unsigned char *hash,
18051805
size_t *hlen )
18061806
{
18071807
#if defined(MBEDTLS_USE_PSA_CRYPTO)
@@ -3197,6 +3197,9 @@ static void ssl_calc_finished_tls_sha256(
31973197
#endif /* MBEDTLS_SHA256_C */
31983198

31993199
#if defined(MBEDTLS_SHA512_C)
3200+
3201+
typedef int (*finish_sha384_t)(mbedtls_sha512_context*, unsigned char*);
3202+
32003203
static void ssl_calc_finished_tls_sha384(
32013204
mbedtls_ssl_context *ssl, unsigned char *buf, int from )
32023205
{
@@ -3255,8 +3258,14 @@ static void ssl_calc_finished_tls_sha384(
32553258
MBEDTLS_SSL_DEBUG_BUF( 4, "finished sha512 state", (unsigned char *)
32563259
sha512.state, sizeof( sha512.state ) );
32573260
#endif
3261+
/*
3262+
* For SHA-384, we can save 16 bytes by keeping padbuf 48 bytes long.
3263+
* However, to avoid stringop-overflow warning in gcc, we have to cast
3264+
* mbedtls_sha512_finish_ret().
3265+
*/
3266+
finish_sha384_t finish = (finish_sha384_t)mbedtls_sha512_finish_ret;
3267+
finish( &sha512, padbuf );
32583268

3259-
mbedtls_sha512_finish_ret( &sha512, padbuf );
32603269
mbedtls_sha512_free( &sha512 );
32613270
#endif
32623271

programs/test/selftest.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ static int calloc_self_test( int verbose )
158158
}
159159
#endif /* MBEDTLS_SELF_TEST */
160160

161-
static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret )
161+
static int test_snprintf( size_t n, const char *ref_buf, int ref_ret )
162162
{
163163
int ret;
164164
char buf[10] = "xxxxxxxxx";

tests/suites/host_test.function

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store
335335
#if defined(__GNUC__)
336336
__attribute__((__noinline__))
337337
#endif
338-
static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret )
338+
static int test_snprintf( size_t n, const char *ref_buf, int ref_ret )
339339
{
340340
int ret;
341341
char buf[10] = "xxxxxxxxx";

0 commit comments

Comments
 (0)