forked from wolfSSL/wolfssl
session ticket extension fix with static memory heap hint
This commit is contained in:
@@ -12438,11 +12438,11 @@ static void PickHashSigAlgo(WOLFSSL* ssl,
|
||||
if (ssl->options.resuming && ssl->session.ticketLen > 0) {
|
||||
SessionTicket* ticket;
|
||||
|
||||
ticket = TLSX_SessionTicket_Create(0,
|
||||
ssl->session.ticket, ssl->session.ticketLen);
|
||||
ticket = TLSX_SessionTicket_Create(0, ssl->session.ticket,
|
||||
ssl->session.ticketLen, ssl->heap);
|
||||
if (ticket == NULL) return MEMORY_E;
|
||||
|
||||
ret = TLSX_UseSessionTicket(&ssl->extensions, ticket);
|
||||
ret = TLSX_UseSessionTicket(&ssl->extensions, ticket, ssl->heap);
|
||||
if (ret != SSL_SUCCESS) return ret;
|
||||
|
||||
idSz = 0;
|
||||
|
@@ -1555,7 +1555,7 @@ int wolfSSL_UseSessionTicket(WOLFSSL* ssl)
|
||||
if (ssl == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
return TLSX_UseSessionTicket(&ssl->extensions, NULL);
|
||||
return TLSX_UseSessionTicket(&ssl->extensions, NULL, ssl->heap);
|
||||
}
|
||||
|
||||
int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx)
|
||||
@@ -1563,7 +1563,7 @@ int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx)
|
||||
if (ctx == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
return TLSX_UseSessionTicket(&ctx->extensions, NULL);
|
||||
return TLSX_UseSessionTicket(&ctx->extensions, NULL, ctx->heap);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_get_SessionTicket(WOLFSSL* ssl,
|
||||
|
18
src/tls.c
18
src/tls.c
@@ -3193,14 +3193,14 @@ static int TLSX_SessionTicket_Parse(WOLFSSL* ssl, byte* input, word16 length,
|
||||
}
|
||||
|
||||
WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
||||
byte* data, word16 size)
|
||||
byte* data, word16 size, void* heap)
|
||||
{
|
||||
SessionTicket* ticket = (SessionTicket*)XMALLOC(sizeof(SessionTicket),
|
||||
NULL, DYNAMIC_TYPE_TLSX);
|
||||
heap, DYNAMIC_TYPE_TLSX);
|
||||
if (ticket) {
|
||||
ticket->data = (byte*)XMALLOC(size, NULL, DYNAMIC_TYPE_TLSX);
|
||||
ticket->data = (byte*)XMALLOC(size, heap, DYNAMIC_TYPE_TLSX);
|
||||
if (ticket->data == NULL) {
|
||||
XFREE(ticket, NULL, DYNAMIC_TYPE_TLSX);
|
||||
XFREE(ticket, heap, DYNAMIC_TYPE_TLSX);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -3211,12 +3211,14 @@ WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
||||
|
||||
return ticket;
|
||||
}
|
||||
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket)
|
||||
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket, void* heap)
|
||||
{
|
||||
if (ticket) {
|
||||
XFREE(ticket->data, NULL, DYNAMIC_TYPE_TLSX);
|
||||
XFREE(ticket, NULL, DYNAMIC_TYPE_TLSX);
|
||||
XFREE(ticket->data, heap, DYNAMIC_TYPE_TLSX);
|
||||
XFREE(ticket, heap, DYNAMIC_TYPE_TLSX);
|
||||
}
|
||||
|
||||
(void)heap;
|
||||
}
|
||||
|
||||
int TLSX_UseSessionTicket(TLSX** extensions, SessionTicket* ticket, void* heap)
|
||||
@@ -3913,6 +3915,8 @@ void TLSX_FreeAll(TLSX* list, void* heap)
|
||||
|
||||
XFREE(extension, heap, DYNAMIC_TYPE_TLSX);
|
||||
}
|
||||
|
||||
(void)heap;
|
||||
}
|
||||
|
||||
/** Checks if the tls extensions are supported based on the protocol version. */
|
||||
|
@@ -1848,8 +1848,8 @@ typedef struct SessionTicket {
|
||||
WOLFSSL_LOCAL int TLSX_UseSessionTicket(TLSX** extensions,
|
||||
SessionTicket* ticket, void* heap);
|
||||
WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
||||
byte* data, word16 size);
|
||||
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket);
|
||||
byte* data, word16 size, void* heap);
|
||||
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket, void* heap);
|
||||
|
||||
#endif /* HAVE_SESSION_TICKET */
|
||||
|
||||
|
Reference in New Issue
Block a user