aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2017-10-27 22:42:04 +0200
committerRichard Levitte <levitte@openssl.org>2017-10-30 18:21:13 +0100
commitd85722d31ac9ff0dc54c06cdc8d125acf56ca27a (patch)
tree0631f42804b40330872997507c6073f880b1cd83
parent751148e2b0d1048522d754d55319166435cdda86 (diff)
downloadopenssl-d85722d31ac9ff0dc54c06cdc8d125acf56ca27a.tar.gz
EVP_PKEY_asn1_add0(): Check that this method isn't already registered
No two public key ASN.1 methods with the same pkey_id can be registered at the same time. Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> (Merged from https://github.com/openssl/openssl/pull/4596)
-rw-r--r--crypto/asn1/ameth_lib.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/crypto/asn1/ameth_lib.c b/crypto/asn1/ameth_lib.c
index 5f523b2969..87a3eba14a 100644
--- a/crypto/asn1/ameth_lib.c
+++ b/crypto/asn1/ameth_lib.c
@@ -137,6 +137,11 @@ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe,
int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth)
{
+ if (pkey_asn1_find(ameth->pkey_id) != NULL) {
+ EVPerr(EVP_F_EVP_PKEY_ASN1_ADD0,
+ EVP_R_PKEY_ASN1_METHOD_ALREADY_REGISTERED);
+ return 0;
+ }
if (app_methods == NULL) {
app_methods = sk_EVP_PKEY_ASN1_METHOD_new(ameth_cmp);
if (app_methods == NULL)