forked from wolfSSL/wolfssl
tls.c: TLSX_SupportedFFDHE_Set(): add handling for malloc failures.
This commit is contained in:
50
src/tls.c
50
src/tls.c
@ -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;
|
||||||
|
Reference in New Issue
Block a user