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) {
|
if (ssl->options.resuming && ssl->session.ticketLen > 0) {
|
||||||
SessionTicket* ticket;
|
SessionTicket* ticket;
|
||||||
|
|
||||||
ticket = TLSX_SessionTicket_Create(0,
|
ticket = TLSX_SessionTicket_Create(0, ssl->session.ticket,
|
||||||
ssl->session.ticket, ssl->session.ticketLen);
|
ssl->session.ticketLen, ssl->heap);
|
||||||
if (ticket == NULL) return MEMORY_E;
|
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;
|
if (ret != SSL_SUCCESS) return ret;
|
||||||
|
|
||||||
idSz = 0;
|
idSz = 0;
|
||||||
|
@@ -1555,7 +1555,7 @@ int wolfSSL_UseSessionTicket(WOLFSSL* ssl)
|
|||||||
if (ssl == NULL)
|
if (ssl == NULL)
|
||||||
return BAD_FUNC_ARG;
|
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)
|
int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx)
|
||||||
@@ -1563,7 +1563,7 @@ int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx)
|
|||||||
if (ctx == NULL)
|
if (ctx == NULL)
|
||||||
return BAD_FUNC_ARG;
|
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,
|
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,
|
WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
||||||
byte* data, word16 size)
|
byte* data, word16 size, void* heap)
|
||||||
{
|
{
|
||||||
SessionTicket* ticket = (SessionTicket*)XMALLOC(sizeof(SessionTicket),
|
SessionTicket* ticket = (SessionTicket*)XMALLOC(sizeof(SessionTicket),
|
||||||
NULL, DYNAMIC_TYPE_TLSX);
|
heap, DYNAMIC_TYPE_TLSX);
|
||||||
if (ticket) {
|
if (ticket) {
|
||||||
ticket->data = (byte*)XMALLOC(size, NULL, DYNAMIC_TYPE_TLSX);
|
ticket->data = (byte*)XMALLOC(size, heap, DYNAMIC_TYPE_TLSX);
|
||||||
if (ticket->data == NULL) {
|
if (ticket->data == NULL) {
|
||||||
XFREE(ticket, NULL, DYNAMIC_TYPE_TLSX);
|
XFREE(ticket, heap, DYNAMIC_TYPE_TLSX);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3211,12 +3211,14 @@ WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
|||||||
|
|
||||||
return ticket;
|
return ticket;
|
||||||
}
|
}
|
||||||
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket)
|
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket, void* heap)
|
||||||
{
|
{
|
||||||
if (ticket) {
|
if (ticket) {
|
||||||
XFREE(ticket->data, NULL, DYNAMIC_TYPE_TLSX);
|
XFREE(ticket->data, heap, DYNAMIC_TYPE_TLSX);
|
||||||
XFREE(ticket, NULL, DYNAMIC_TYPE_TLSX);
|
XFREE(ticket, heap, DYNAMIC_TYPE_TLSX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(void)heap;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TLSX_UseSessionTicket(TLSX** extensions, SessionTicket* ticket, 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);
|
XFREE(extension, heap, DYNAMIC_TYPE_TLSX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(void)heap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Checks if the tls extensions are supported based on the protocol version. */
|
/** 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,
|
WOLFSSL_LOCAL int TLSX_UseSessionTicket(TLSX** extensions,
|
||||||
SessionTicket* ticket, void* heap);
|
SessionTicket* ticket, void* heap);
|
||||||
WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime,
|
||||||
byte* data, word16 size);
|
byte* data, word16 size, void* heap);
|
||||||
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket);
|
WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket, void* heap);
|
||||||
|
|
||||||
#endif /* HAVE_SESSION_TICKET */
|
#endif /* HAVE_SESSION_TICKET */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user