mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
DH Fix 2
1. Add some missing frees for the error cases when the server DH public key is rejected.
This commit is contained in:
@ -21231,6 +21231,9 @@ static int GetDhPublicKey(WOLFSSL* ssl, const byte* input, word32 size,
|
|||||||
if (length > ssl->options.maxDhKeySz) {
|
if (length > ssl->options.maxDhKeySz) {
|
||||||
WOLFSSL_MSG("Server using a DH key generator that is too big");
|
WOLFSSL_MSG("Server using a DH key generator that is too big");
|
||||||
SendAlert(ssl, alert_fatal, handshake_failure);
|
SendAlert(ssl, alert_fatal, handshake_failure);
|
||||||
|
XFREE(ssl->buffers.serverDH_P.buffer, ssl->heap,
|
||||||
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
ssl->buffers.serverDH_P.buffer = NULL;
|
||||||
ERROR_OUT(DH_KEY_SIZE_E, exit_gdpk);
|
ERROR_OUT(DH_KEY_SIZE_E, exit_gdpk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21277,11 +21280,23 @@ static int GetDhPublicKey(WOLFSSL* ssl, const byte* input, word32 size,
|
|||||||
if (length < ssl->options.minDhKeySz) {
|
if (length < ssl->options.minDhKeySz) {
|
||||||
WOLFSSL_MSG("Server using a public DH key that is too small");
|
WOLFSSL_MSG("Server using a public DH key that is too small");
|
||||||
SendAlert(ssl, alert_fatal, handshake_failure);
|
SendAlert(ssl, alert_fatal, handshake_failure);
|
||||||
|
XFREE(ssl->buffers.serverDH_P.buffer, ssl->heap,
|
||||||
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
ssl->buffers.serverDH_P.buffer = NULL;
|
||||||
|
XFREE(ssl->buffers.serverDH_G.buffer, ssl->heap,
|
||||||
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
ssl->buffers.serverDH_G.buffer = NULL;
|
||||||
ERROR_OUT(DH_KEY_SIZE_E, exit_gdpk);
|
ERROR_OUT(DH_KEY_SIZE_E, exit_gdpk);
|
||||||
}
|
}
|
||||||
if (length > ssl->options.maxDhKeySz) {
|
if (length > ssl->options.maxDhKeySz) {
|
||||||
WOLFSSL_MSG("Server using a public DH key that is too big");
|
WOLFSSL_MSG("Server using a public DH key that is too big");
|
||||||
SendAlert(ssl, alert_fatal, handshake_failure);
|
SendAlert(ssl, alert_fatal, handshake_failure);
|
||||||
|
XFREE(ssl->buffers.serverDH_P.buffer, ssl->heap,
|
||||||
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
ssl->buffers.serverDH_P.buffer = NULL;
|
||||||
|
XFREE(ssl->buffers.serverDH_G.buffer, ssl->heap,
|
||||||
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
ssl->buffers.serverDH_G.buffer = NULL;
|
||||||
ERROR_OUT(DH_KEY_SIZE_E, exit_gdpk);
|
ERROR_OUT(DH_KEY_SIZE_E, exit_gdpk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user