Sanity check protocol version.

This commit is contained in:
Juliusz Sosinowicz
2020-12-11 14:34:54 +01:00
parent 22ae66dfe1
commit 8b9f8029a8

View File

@ -16228,12 +16228,25 @@ int wolfSSL_get_server_tmp_key(const WOLFSSL* ssl, WOLFSSL_EVP_PKEY** pkey)
#endif /* !NO_WOLFSSL_SERVER */ #endif /* !NO_WOLFSSL_SERVER */
static int sanityCheckProtoVersion(WOLFSSL_CTX* ctx)
{
if ((ctx->mask & WOLFSSL_OP_NO_SSLv3) &&
(ctx->mask & WOLFSSL_OP_NO_TLSv1) &&
(ctx->mask & WOLFSSL_OP_NO_TLSv1_1) &&
(ctx->mask & WOLFSSL_OP_NO_TLSv1_2) &&
(ctx->mask & WOLFSSL_OP_NO_TLSv1_3)) {
WOLFSSL_MSG("All TLS versions disabled");
return WOLFSSL_FAILURE;
}
return WOLFSSL_SUCCESS;
}
int wolfSSL_CTX_set_min_proto_version(WOLFSSL_CTX* ctx, int version) int wolfSSL_CTX_set_min_proto_version(WOLFSSL_CTX* ctx, int version)
{ {
WOLFSSL_ENTER("wolfSSL_CTX_set_min_proto_version"); WOLFSSL_ENTER("wolfSSL_CTX_set_min_proto_version");
if (ctx == NULL) { if (ctx == NULL) {
return BAD_FUNC_ARG; return WOLFSSL_FAILURE;
} }
switch (version) { switch (version) {
@ -16275,7 +16288,7 @@ int wolfSSL_CTX_set_min_proto_version(WOLFSSL_CTX* ctx, int version)
break; break;
#endif #endif
default: default:
return BAD_FUNC_ARG; return WOLFSSL_FAILURE;
} }
switch (version) { switch (version) {
@ -16313,7 +16326,7 @@ int wolfSSL_CTX_set_min_proto_version(WOLFSSL_CTX* ctx, int version)
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
return WOLFSSL_SUCCESS; return sanityCheckProtoVersion(ctx);
} }
int wolfSSL_CTX_set_max_proto_version(WOLFSSL_CTX* ctx, int ver) int wolfSSL_CTX_set_max_proto_version(WOLFSSL_CTX* ctx, int ver)
@ -16358,7 +16371,7 @@ int wolfSSL_CTX_set_max_proto_version(WOLFSSL_CTX* ctx, int ver)
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
return WOLFSSL_SUCCESS; return sanityCheckProtoVersion(ctx);
} }
#endif /* OPENSSL_EXTRA */ #endif /* OPENSSL_EXTRA */