]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Don't crash encoding a public key with no public key value
authorMatt Caswell <matt@openssl.org>
Mon, 25 Oct 2021 12:07:01 +0000 (13:07 +0100)
committerPauli <pauli@openssl.org>
Tue, 26 Oct 2021 22:57:12 +0000 (08:57 +1000)
If asked to encode an EC_KEY public key, but no public key value is present
in the structure, we should fail rather than crash.

Fixes the crash seen here:
https://mta.openssl.org/pipermail/openssl-users/2021-October/014479.html

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16911)

providers/implementations/encode_decode/encode_key2any.c

index f142f2b2424d936fa481463a38675bd316070551..9ee12a9fd488174afe025b878ce1d4b3b20c0d94 100644 (file)
@@ -701,6 +701,10 @@ static int prepare_ec_params(const void *eckey, int nid, int save,
 
 static int ec_spki_pub_to_der(const void *eckey, unsigned char **pder)
 {
+    if (EC_KEY_get0_public_key(eckey) == NULL) {
+        ERR_raise(ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY);
+        return 0;
+    }
     return i2o_ECPublicKey(eckey, pder);
 }