Skip to content

Commit fbbb2b8

Browse files
committed
wolfssl/wolfcrypt/types.h: add static_assert() definitions;
wolfssl/internal.h: add DTLS13_HANDSHAKE_HEADER_SZ; src/tls13.c: in EchHashHelloInner(), use falseHeader[DTLS13_HANDSHAKE_HEADER_SZ] to fix buffer overrun; src/dtls13.c: add static assert for DTLS13_HANDSHAKE_HEADER_SZ.
1 parent 263cb5b commit fbbb2b8

4 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/dtls13.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ typedef struct Dtls13HandshakeHeader {
7171
byte fragmentLength[3];
7272
} Dtls13HandshakeHeader;
7373

74+
static_assert(sizeof(Dtls13HandshakeHeader) == DTLS13_HANDSHAKE_HEADER_SZ);
75+
7476
/**
7577
* struct Dtls13Recordplaintextheader: represent header of unprotected DTLSv1.3
7678
* record

src/tls13.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4165,7 +4165,11 @@ static int EchHashHelloInner(WOLFSSL* ssl, WOLFSSL_ECH* ech)
41654165
{
41664166
int ret;
41674167
HS_Hashes* tmpHashes;
4168+
#ifdef WOLFSSL_DTLS13
4169+
byte falseHeader[DTLS13_HANDSHAKE_HEADER_SZ];
4170+
#else
41684171
byte falseHeader[HANDSHAKE_HEADER_SZ];
4172+
#endif
41694173

41704174
if (ssl == NULL || ech == NULL)
41714175
return BAD_FUNC_ARG;

wolfssl/internal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,6 +1637,7 @@ enum Misc {
16371637
#endif
16381638

16391639
HANDSHAKE_HEADER_SZ = 4, /* type + length(3) */
1640+
DTLS13_HANDSHAKE_HEADER_SZ = 12, /* sizeof(Dtls13HandshakeHeader) */
16401641
RECORD_HEADER_SZ = 5, /* type + version + len(2) */
16411642
CERT_HEADER_SZ = 3, /* always 3 bytes */
16421643
REQ_HEADER_SZ = 2, /* cert request header sz */

wolfssl/wolfcrypt/types.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,6 +1694,24 @@ typedef struct w64wrapper {
16941694
#define PRAGMA_DIAG_POP /* null expansion */
16951695
#endif
16961696

1697+
#define WC_CPP_CAT_(a, b) a ## b
1698+
#define WC_CPP_CAT(a, b) WC_CPP_CAT_(a, b)
1699+
#ifndef static_assert
1700+
#if !defined(__cplusplus) && !defined(__STRICT_ANSI__) && \
1701+
!defined(WOLF_C89) && ((defined(__GNUC__) && \
1702+
__GNUC__ >= 5) || defined(__clang__))
1703+
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
1704+
#define static_assert(expr, ...) \
1705+
__static_assert(expr, ##__VA_ARGS__, #expr)
1706+
#elif defined(__STRICT_ANSI__) || defined(WOLF_C89)
1707+
#define static_assert(expr) \
1708+
struct WC_CPP_CAT(dummy_struct_, __LINE__)
1709+
#else
1710+
#define static_assert(...) \
1711+
struct WC_CPP_CAT(wc_dummy_struct_L, __LINE__)
1712+
#endif
1713+
#endif
1714+
16971715
#ifndef SAVE_VECTOR_REGISTERS
16981716
#define SAVE_VECTOR_REGISTERS(...) WC_DO_NOTHING
16991717
#endif

0 commit comments

Comments
 (0)