session ticket extension fix with static memory heap hint

This commit is contained in:
Jacob Barthelmeh
2016-06-08 10:50:20 -06:00
parent e214086dce
commit 664d2190ba
4 changed files with 18 additions and 14 deletions

View File

@@ -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;

View File

@@ -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,

View File

@@ -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. */

View File

@@ -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 */