Skip to content

Commit dc90b9c

Browse files
stanhurhenium
authored andcommitted
Check NULL values for deprecated EVP_PKEY_get0() functions
In OpenSSL <= 1.1.1, EVP_PKEY_get0() always returned a valid object, so a NULL check was not necessary. In OpenSSL 3.0, the function can return NULL (https://docs.openssl.org/3.0/man7/migration_guide/#deprecated-function-mappings), so guard against this issue.
1 parent 2687f96 commit dc90b9c

File tree

4 files changed

+8
-0
lines changed

4 files changed

+8
-0
lines changed

ext/openssl/ossl_pkey_dh.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
EVP_PKEY *_pkey; \
2222
GetPKeyDH((obj), _pkey); \
2323
(dh) = EVP_PKEY_get0_DH(_pkey); \
24+
if ((dh) == NULL) \
25+
ossl_raise(eDHError, "failed to get DH from EVP_PKEY"); \
2426
} while (0)
2527

2628
/*

ext/openssl/ossl_pkey_dsa.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
EVP_PKEY *_pkey; \
2222
GetPKeyDSA((obj), _pkey); \
2323
(dsa) = EVP_PKEY_get0_DSA(_pkey); \
24+
if ((dsa) == NULL) \
25+
ossl_raise(eDSAError, "failed to get DSA from EVP_PKEY"); \
2426
} while (0)
2527

2628
static inline int

ext/openssl/ossl_pkey_ec.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ static const rb_data_type_t ossl_ec_point_type;
2222
EVP_PKEY *_pkey; \
2323
GetPKeyEC(obj, _pkey); \
2424
(key) = EVP_PKEY_get0_EC_KEY(_pkey); \
25+
if ((key) == NULL) \
26+
ossl_raise(eECError, "failed to get EC_KEY from EVP_PKEY"); \
2527
} while (0)
2628

2729
#define GetECGroup(obj, group) do { \

ext/openssl/ossl_pkey_rsa.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
EVP_PKEY *_pkey; \
2222
GetPKeyRSA((obj), _pkey); \
2323
(rsa) = EVP_PKEY_get0_RSA(_pkey); \
24+
if ((rsa) == NULL) \
25+
ossl_raise(eRSAError, "failed to get RSA from EVP_PKEY"); \
2426
} while (0)
2527

2628
static inline int

0 commit comments

Comments
 (0)