From c8c107a09e268cd89d8596166850d6118da0ea12 Mon Sep 17 00:00:00 2001 From: Daniel Pouzzner Date: Tue, 18 Oct 2022 13:34:24 -0500 Subject: [PATCH 1/2] linuxkm/: fixes to deal with kernel 6.1+ show_free_areas() mess. --- linuxkm/linuxkm_memory.c | 16 ++++++++++++++++ linuxkm/linuxkm_wc_port.h | 24 ++++++++++++++++++++---- linuxkm/module_hooks.c | 13 +++++++++---- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/linuxkm/linuxkm_memory.c b/linuxkm/linuxkm_memory.c index 8819bca74..a4889704c 100644 --- a/linuxkm/linuxkm_memory.c +++ b/linuxkm/linuxkm_memory.c @@ -305,3 +305,19 @@ return; } #endif /* WOLFSSL_LINUXKM_SIMD_X86 && WOLFSSL_LINUXKM_SIMD_X86_IRQ_ALLOWED */ + +#if defined(__PIE__) && (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) +/* needed in 6.1+ because show_free_areas() static definition in mm.h calls + * __show_free_areas(), which isn't exported (neither was show_free_areas()). + */ +void my__show_free_areas( + unsigned int flags, + nodemask_t *nodemask, + int max_zone_idx) +{ + (void)flags; + (void)nodemask; + (void)max_zone_idx; + return; +} +#endif diff --git a/linuxkm/linuxkm_wc_port.h b/linuxkm/linuxkm_wc_port.h index a822c971f..49e17325f 100644 --- a/linuxkm/linuxkm_wc_port.h +++ b/linuxkm/linuxkm_wc_port.h @@ -105,6 +105,13 @@ */ #undef USE_SPLIT_PMD_PTLOCKS #define USE_SPLIT_PMD_PTLOCKS 0 + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + /* without this, static show_free_areas() mm.h brings in direct + * reference to unexported __show_free_areas(). + */ + #define __show_free_areas my__show_free_areas + #endif #endif #include #ifndef SINGLE_THREADED @@ -267,8 +274,13 @@ typeof(kvfree) *kvfree; #endif typeof(is_vmalloc_addr) *is_vmalloc_addr; - typeof(kmem_cache_alloc_trace) *kmem_cache_alloc_trace; - typeof(kmalloc_order_trace) *kmalloc_order_trace; + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + typeof(kmalloc_trace) *kmalloc_trace; + #else + typeof(kmem_cache_alloc_trace) *kmem_cache_alloc_trace; + typeof(kmalloc_order_trace) *kmalloc_order_trace; + #endif typeof(get_random_bytes) *get_random_bytes; #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) @@ -402,8 +414,12 @@ #define kvfree (wolfssl_linuxkm_get_pie_redirect_table()->kvfree) #endif #define is_vmalloc_addr (wolfssl_linuxkm_get_pie_redirect_table()->is_vmalloc_addr) - #define kmem_cache_alloc_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmem_cache_alloc_trace) - #define kmalloc_order_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_order_trace) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + #define kmalloc_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_trace) + #else + #define kmem_cache_alloc_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmem_cache_alloc_trace) + #define kmalloc_order_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_order_trace) + #endif #define get_random_bytes (wolfssl_linuxkm_get_pie_redirect_table()->get_random_bytes) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) diff --git a/linuxkm/module_hooks.c b/linuxkm/module_hooks.c index 74df63546..608d34611 100644 --- a/linuxkm/module_hooks.c +++ b/linuxkm/module_hooks.c @@ -394,10 +394,15 @@ static int set_up_wolfssl_linuxkm_pie_redirect_table(void) { wolfssl_linuxkm_pie_redirect_table.kvfree = kvfree; #endif wolfssl_linuxkm_pie_redirect_table.is_vmalloc_addr = is_vmalloc_addr; - wolfssl_linuxkm_pie_redirect_table.kmem_cache_alloc_trace = - kmem_cache_alloc_trace; - wolfssl_linuxkm_pie_redirect_table.kmalloc_order_trace = - kmalloc_order_trace; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + wolfssl_linuxkm_pie_redirect_table.kmalloc_trace = + kmalloc_trace; + #else + wolfssl_linuxkm_pie_redirect_table.kmem_cache_alloc_trace = + kmem_cache_alloc_trace; + wolfssl_linuxkm_pie_redirect_table.kmalloc_order_trace = + kmalloc_order_trace; + #endif wolfssl_linuxkm_pie_redirect_table.get_random_bytes = get_random_bytes; #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) From 895a2e1ac5a6a036ab5cfa7dfd7a1fc1e5676435 Mon Sep 17 00:00:00 2001 From: Daniel Pouzzner Date: Tue, 18 Oct 2022 13:34:42 -0500 Subject: [PATCH 2/2] WOLFSSL_CALLBACKS codepaths: fixes for bugprone-unused-return-value, bugprone-macro-parentheses, readability-named-parameter, and clang-analyzer-deadcode.DeadStores --- examples/server/server.c | 1 + src/internal.c | 113 +++++++++++++++++++++++++++------------ src/ssl.c | 29 +++++----- src/tls13.c | 38 +++++++++---- wolfssl/internal.h | 6 +-- wolfssl/ssl.h | 8 +-- 6 files changed, 131 insertions(+), 64 deletions(-) diff --git a/examples/server/server.c b/examples/server/server.c index 6bc75d43a..ae6e19ce4 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -3360,6 +3360,7 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args) } while (err == WC_PENDING_E); } #else + (void)nonBlocking; ret = NonBlockingSSL_Accept(ssl); #endif #ifdef WOLFSSL_EARLY_DATA diff --git a/src/internal.c b/src/internal.c index ce14ba9ea..ae7c9bf93 100644 --- a/src/internal.c +++ b/src/internal.c @@ -9637,8 +9637,10 @@ static int SendHandshakeMsg(WOLFSSL* ssl, byte* input, word32 inputSz, AddPacketName(ssl, packetName); } if (ssl->toInfoOn) { - AddPacketInfo(ssl, packetName, handshake, + ret = AddPacketInfo(ssl, packetName, handshake, output, outputSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif ssl->fragOffset += fragSz; @@ -15473,9 +15475,11 @@ static int DoHandShakeMsgType(WOLFSSL* ssl, byte* input, word32* inOutIdx, /* add name later, add the handshake header part back on and record layer * header */ if (ssl->toInfoOn) { - AddPacketInfo(ssl, 0, handshake, input + *inOutIdx - + ret = AddPacketInfo(ssl, 0, handshake, input + *inOutIdx - HANDSHAKE_HEADER_SZ, size + HANDSHAKE_HEADER_SZ, READ_PROTO, RECORD_HEADER_SZ, ssl->heap); + if (ret != 0) + return ret; #ifdef WOLFSSL_CALLBACKS AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); #endif @@ -18556,8 +18560,10 @@ static int DoAlert(WOLFSSL* ssl, byte* input, word32* inOutIdx, int* type) AddPacketName(ssl, "Alert"); if (ssl->toInfoOn) { /* add record header back on to info + alert bytes level/code */ - AddPacketInfo(ssl, "Alert", alert, input + *inOutIdx, ALERT_SIZE, - READ_PROTO, RECORD_HEADER_SZ, ssl->heap); + int ret = AddPacketInfo(ssl, "Alert", alert, input + *inOutIdx, + ALERT_SIZE, READ_PROTO, RECORD_HEADER_SZ, ssl->heap); + if (ret != 0) + return ret; #ifdef WOLFSSL_CALLBACKS AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); #endif @@ -19678,11 +19684,13 @@ int ProcessReplyEx(WOLFSSL* ssl, int allowSocketErr) AddPacketName(ssl, "ChangeCipher"); /* add record header back on info */ if (ssl->toInfoOn) { - AddPacketInfo(ssl, "ChangeCipher", + ret = AddPacketInfo(ssl, "ChangeCipher", change_cipher_spec, ssl->buffers.inputBuffer.buffer + ssl->buffers.inputBuffer.idx, 1, READ_PROTO, RECORD_HEADER_SZ, ssl->heap); + if (ret != 0) + return ret; #ifdef WOLFSSL_CALLBACKS AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); #endif @@ -20073,9 +20081,12 @@ int SendChangeCipher(WOLFSSL* ssl) #endif #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "ChangeCipher"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "ChangeCipher", change_cipher_spec, output, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "ChangeCipher", change_cipher_spec, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->buffers.outputBuffer.length += sendSz; @@ -21024,9 +21035,12 @@ int SendFinished(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "Finished"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "Finished", handshake, output, sendSz, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "Finished", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->buffers.outputBuffer.length += sendSz; @@ -21466,9 +21480,12 @@ int SendCertificate(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "Certificate"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "Certificate", handshake, output, sendSz, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "Certificate", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->buffers.outputBuffer.length += sendSz; @@ -21662,9 +21679,12 @@ int SendCertificateRequest(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "CertificateRequest"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "CertificateRequest", handshake, output, sendSz, - WRITE_PROTO, 0, ssl->heap); + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "CertificateRequest", handshake, output, + sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->buffers.outputBuffer.length += sendSz; if (ssl->options.groupMessages) @@ -21776,9 +21796,12 @@ static int BuildCertificateStatus(WOLFSSL* ssl, byte type, buffer* status, #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ret == 0 && ssl->hsInfoOn) AddPacketName(ssl, "CertificateStatus"); - if (ret == 0 && ssl->toInfoOn) - AddPacketInfo(ssl, "CertificateStatus", handshake, output, sendSz, - WRITE_PROTO, 0, ssl->heap); + if (ret == 0 && ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "CertificateStatus", handshake, output, + sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif if (ret == 0) { @@ -22703,9 +22726,12 @@ static int SendAlert_ex(WOLFSSL* ssl, int severity, int type) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "Alert"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "Alert", alert, output, sendSz, WRITE_PROTO, 0, - ssl->heap); + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "Alert", alert, output, sendSz, + WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->buffers.outputBuffer.length += sendSz; @@ -25173,7 +25199,7 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz) * written 1 if this packet is being written to wire, 0 if being read * heap custom heap to use for mallocs/frees */ - void AddPacketInfo(WOLFSSL* ssl, const char* name, int type, + int AddPacketInfo(WOLFSSL* ssl, const char* name, int type, const byte* data, int sz, int written, int lateRL, void* heap) { #ifdef WOLFSSL_CALLBACKS @@ -25213,7 +25239,10 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz) lateRL, data, sz); } } - gettimeofday(&currTime, 0); + + if (gettimeofday(&currTime, 0) < 0) + return SYSLIB_FAILED_E; + info->packets[info->numberPackets].timestamp.tv_sec = currTime.tv_sec; info->packets[info->numberPackets].timestamp.tv_usec = @@ -25242,6 +25271,8 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz) (void)type; (void)ssl; (void)lateRL; + + return 0; } #endif /* WOLFSSL_CALLBACKS */ @@ -26140,9 +26171,12 @@ static int HashSkeData(WOLFSSL* ssl, enum wc_HashType hashType, #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "ClientHello"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "ClientHello", handshake, output, sendSz, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "ClientHello", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->options.buildingMsg = 0; @@ -29506,9 +29540,13 @@ int SendClientKeyExchange(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "ClientKeyExchange"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "ClientKeyExchange", handshake, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "ClientKeyExchange", handshake, args->output, args->sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) { + goto exit_scke; + } + } #endif ssl->buffers.outputBuffer.length += args->sendSz; @@ -30537,9 +30575,12 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx, #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "ServerHello"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->options.serverState = SERVER_HELLO_COMPLETE; @@ -33956,9 +33997,12 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx, #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "ServerHelloDone"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "ServerHelloDone", handshake, output, sendSz, - WRITE_PROTO, 0, ssl->heap); + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "ServerHelloDone", handshake, output, + sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif ssl->options.serverState = SERVER_HELLODONE_COMPLETE; ssl->options.buildingMsg = 0; @@ -35078,9 +35122,12 @@ static int DefTicketEncCb(WOLFSSL* ssl, byte key_name[WOLFSSL_TICKET_NAME_SZ], #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "HelloVerifyRequest"); - if (ssl->toInfoOn) - AddPacketInfo(ssl, "HelloVerifyRequest", handshake, output, + if (ssl->toInfoOn) { + ret = AddPacketInfo(ssl, "HelloVerifyRequest", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; + } #endif /* are we in scr */ diff --git a/src/ssl.c b/src/ssl.c index 2ba19ff7e..9771cac1b 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -15201,29 +15201,29 @@ int wolfSSL_set_compression(WOLFSSL* ssl) #define AddTimes(a, b, c) \ do { \ - c.tv_sec = a.tv_sec + b.tv_sec; \ - c.tv_usec = a.tv_usec + b.tv_usec; \ - if (c.tv_usec >= 1000000) { \ - c.tv_sec++; \ - c.tv_usec -= 1000000; \ + (c).tv_sec = (a).tv_sec + (b).tv_sec; \ + (c).tv_usec = (a).tv_usec + (b).tv_usec;\ + if ((c).tv_usec >= 1000000) { \ + (c).tv_sec++; \ + (c).tv_usec -= 1000000; \ } \ } while (0) #define SubtractTimes(a, b, c) \ do { \ - c.tv_sec = a.tv_sec - b.tv_sec; \ - c.tv_usec = a.tv_usec - b.tv_usec; \ - if (c.tv_usec < 0) { \ - c.tv_sec--; \ - c.tv_usec += 1000000; \ + (c).tv_sec = (a).tv_sec - (b).tv_sec; \ + (c).tv_usec = (a).tv_usec - (b).tv_usec;\ + if ((c).tv_usec < 0) { \ + (c).tv_sec--; \ + (c).tv_usec += 1000000; \ } \ } while (0) #define CmpTimes(a, b, cmp) \ - ((a.tv_sec == b.tv_sec) ? \ - (a.tv_usec cmp b.tv_usec) : \ - (a.tv_sec cmp b.tv_sec)) \ + (((a).tv_sec == (b).tv_sec) ? \ + ((a).tv_usec cmp (b).tv_usec) : \ + ((a).tv_sec cmp (b).tv_sec)) \ /* do nothing handler */ @@ -15306,7 +15306,8 @@ int wolfSSL_set_compression(WOLFSSL* ssl) /* do callbacks */ if (toCb) { if (oldTimerOn) { - gettimeofday(&endTime, 0); + if (gettimeofday(&endTime, 0) < 0) + ERR_OUT(SYSLIB_FAILED_E); SubtractTimes(endTime, startTime, totalTime); /* adjust old timer for elapsed time */ if (CmpTimes(totalTime, oldTimeout.it_value, <)) diff --git a/src/tls13.c b/src/tls13.c index d1ca5e410..b18df6d19 100644 --- a/src/tls13.c +++ b/src/tls13.c @@ -3989,8 +3989,10 @@ int SendTls13ClientHello(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "ClientHello"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "ClientHello", handshake, args->output, args->sendSz, - WRITE_PROTO, 0, ssl->heap); + ret = AddPacketInfo(ssl, "ClientHello", handshake, args->output, + args->sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -6217,8 +6219,10 @@ int SendTls13ServerHello(WOLFSSL* ssl, byte extMsgType) if (ssl->hsInfoOn) AddPacketName(ssl, "ServerHello"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz, + ret = AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -6361,8 +6365,10 @@ static int SendTls13EncryptedExtensions(WOLFSSL* ssl) if (ssl->hsInfoOn) AddPacketName(ssl, "EncryptedExtensions"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "EncryptedExtensions", handshake, output, + ret = AddPacketInfo(ssl, "EncryptedExtensions", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -6502,8 +6508,10 @@ static int SendTls13CertificateRequest(WOLFSSL* ssl, byte* reqCtx, if (ssl->hsInfoOn) AddPacketName(ssl, "CertificateRequest"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "CertificateRequest", handshake, output, + ret = AddPacketInfo(ssl, "CertificateRequest", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -7309,8 +7317,10 @@ static int SendTls13Certificate(WOLFSSL* ssl) if (ssl->hsInfoOn) AddPacketName(ssl, "Certificate"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "Certificate", handshake, output, + ret = AddPacketInfo(ssl, "Certificate", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -7857,9 +7867,11 @@ static int SendTls13CertificateVerify(WOLFSSL* ssl) if (ssl->hsInfoOn) AddPacketName(ssl, "CertificateVerify"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "CertificateVerify", handshake, + ret = AddPacketInfo(ssl, "CertificateVerify", handshake, args->output, args->sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + goto exit_scv; } #endif @@ -8778,8 +8790,10 @@ static int SendTls13Finished(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "Finished"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "Finished", handshake, output, sendSz, + ret = AddPacketInfo(ssl, "Finished", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -8987,8 +9001,10 @@ static int SendTls13KeyUpdate(WOLFSSL* ssl) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) if (ssl->hsInfoOn) AddPacketName(ssl, "KeyUpdate"); if (ssl->toInfoOn) { - AddPacketInfo(ssl, "KeyUpdate", handshake, output, sendSz, + ret = AddPacketInfo(ssl, "KeyUpdate", handshake, output, sendSz, WRITE_PROTO, 0, ssl->heap); + if (ret != 0) + return ret; } #endif @@ -10168,9 +10184,11 @@ int DoTls13HandShakeMsgType(WOLFSSL* ssl, byte* input, word32* inOutIdx, #if defined(WOLFSSL_CALLBACKS) /* add name later, add on record and handshake header part back on */ if (ssl->toInfoOn) { - AddPacketInfo(ssl, 0, handshake, input + *inOutIdx - + ret = AddPacketInfo(ssl, 0, handshake, input + *inOutIdx - HANDSHAKE_HEADER_SZ, size + HANDSHAKE_HEADER_SZ, READ_PROTO, RECORD_HEADER_SZ, ssl->heap); + if (ret != 0) + return ret; AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); } #endif diff --git a/wolfssl/internal.h b/wolfssl/internal.h index 0c039909d..c2858b62c 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -2072,8 +2072,8 @@ enum { #error Invalid static buffer length #endif #elif defined(LARGE_STATIC_BUFFERS) - #define STATIC_BUFFER_LEN RECORD_HEADER_SZ + RECORD_SIZE + COMP_EXTRA + \ - MTU_EXTRA + MAX_MSG_EXTRA + #define STATIC_BUFFER_LEN (RECORD_HEADER_SZ + RECORD_SIZE + COMP_EXTRA + \ + MTU_EXTRA + MAX_MSG_EXTRA) #else /* don't fragment memory from the record header */ #define STATIC_BUFFER_LEN RECORD_HEADER_SZ @@ -5311,7 +5311,7 @@ WOLFSSL_API void SSL_ResourceFree(WOLFSSL* ssl); /* Micrium uses */ WOLFSSL_LOCAL void InitTimeoutInfo(TimeoutInfo* info); WOLFSSL_LOCAL void FreeTimeoutInfo(TimeoutInfo* info, void* heap); - WOLFSSL_LOCAL void AddPacketInfo(WOLFSSL* ssl, const char* name, int type, + WOLFSSL_LOCAL int AddPacketInfo(WOLFSSL* ssl, const char* name, int type, const byte* data, int sz, int written, int lateRL, void* heap); WOLFSSL_LOCAL void AddLateName(const char* name, TimeoutInfo* info); diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 66127b14d..4c449370f 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -4104,10 +4104,10 @@ typedef int (*TimeoutCallBack)(TimeoutInfo*); /* wolfSSL connect extension allowing HandShakeCallBack and/or TimeoutCallBack for diagnostics */ -WOLFSSL_API int wolfSSL_connect_ex(WOLFSSL* ssl, HandShakeCallBack, TimeoutCallBack, - WOLFSSL_TIMEVAL); -WOLFSSL_API int wolfSSL_accept_ex(WOLFSSL* ssl, HandShakeCallBack, TimeoutCallBack, - WOLFSSL_TIMEVAL); +WOLFSSL_API int wolfSSL_connect_ex(WOLFSSL* ssl, HandShakeCallBack hsCb, + TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout); +WOLFSSL_API int wolfSSL_accept_ex(WOLFSSL* ssl, HandShakeCallBack hsCb, + TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout); #endif /* WOLFSSL_CALLBACKS */