tls.c: TLSX_SupportedFFDHE_Set(): add handling for malloc failures.

This commit is contained in:
Daniel Pouzzner
2021-10-27 15:11:04 -05:00
parent 3a80ba6744
commit f413ff8b3a

View File

@ -4297,18 +4297,46 @@ int TLSX_SupportedFFDHE_Set(WOLFSSL* ssl)
#else #else
word32 pSz, gSz; word32 pSz, gSz;
ssl->buffers.serverDH_P.buffer = NULL;
ssl->buffers.serverDH_G.buffer = NULL;
ret = wc_DhGetNamedKeyParamSize(serverGroup->name, &pSz, &gSz, NULL); ret = wc_DhGetNamedKeyParamSize(serverGroup->name, &pSz, &gSz, NULL);
ssl->buffers.serverDH_P.buffer = (byte*)XMALLOC(pSz, if (ret == 0) {
ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY); ssl->buffers.serverDH_P.buffer =
ssl->buffers.serverDH_P.length = pSz; (byte*)XMALLOC(pSz, ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY);
ssl->buffers.serverDH_G.buffer = (byte*)XMALLOC(gSz, if (ssl->buffers.serverDH_P.buffer == NULL)
ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY); ret = MEMORY_E;
ssl->buffers.serverDH_G.length = gSz; else
wc_DhCopyNamedKey(serverGroup->name, ssl->buffers.serverDH_P.length = pSz;
ssl->buffers.serverDH_P.buffer, &pSz, }
ssl->buffers.serverDH_G.buffer, &gSz, if (ret == 0) {
NULL, NULL); ssl->buffers.serverDH_G.buffer =
ssl->buffers.weOwnDH = 1; (byte*)XMALLOC(gSz, ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY);
if (ssl->buffers.serverDH_G.buffer == NULL) {
ret = MEMORY_E;
} else
ssl->buffers.serverDH_G.length = gSz;
}
if (ret == 0) {
ret = wc_DhCopyNamedKey(serverGroup->name,
ssl->buffers.serverDH_P.buffer, &pSz,
ssl->buffers.serverDH_G.buffer, &gSz,
NULL, NULL);
}
if (ret == 0) {
ssl->buffers.weOwnDH = 1;
} else {
if (ssl->buffers.serverDH_P.buffer != NULL) {
XFREE(ssl->buffers.serverDH_P.buffer, ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY);
ssl->buffers.serverDH_P.length = 0;
ssl->buffers.serverDH_P.buffer = NULL;
}
if (ssl->buffers.serverDH_G.buffer != NULL) {
XFREE(ssl->buffers.serverDH_G.buffer, ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY);
ssl->buffers.serverDH_G.length = 0;
ssl->buffers.serverDH_G.buffer = NULL;
}
return ret;
}
#endif #endif
ssl->namedGroup = serverGroup->name; ssl->namedGroup = serverGroup->name;