The branch master has been updated via 0e6f62e3e1c4cdaa8e3bda7d459f978541dfb1fe (commit) via 55ecb812b1fd71aa829c3f5ac6030f2ed437eb30 (commit) from 4d6d787c4937706676355ce241c6e538475295d2 (commit)
- Log ----------------------------------------------------------------- commit 0e6f62e3e1c4cdaa8e3bda7d459f978541dfb1fe Author: Matt Caswell <m...@openssl.org> Date: Fri Mar 6 18:05:37 2020 +0000 If the first serializer we find is the desired one that's ok Stop looking for a desired serializer if the first one is desired. Reviewed-by: Richard Levitte <levi...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/11271) commit 55ecb812b1fd71aa829c3f5ac6030f2ed437eb30 Author: Matt Caswell <m...@openssl.org> Date: Fri Mar 6 18:02:46 2020 +0000 Don't crash if we fail to find a serializer for the current provider The code was assuming that a serializer would always be found - but this may not be the case. Reviewed-by: Richard Levitte <levi...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/11271) ----------------------------------------------------------------------- Summary of changes: crypto/serializer/serializer_pkey.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/crypto/serializer/serializer_pkey.c b/crypto/serializer/serializer_pkey.c index 1b6df1da53..4b1bf5c3ee 100644 --- a/crypto/serializer/serializer_pkey.c +++ b/crypto/serializer/serializer_pkey.c @@ -121,13 +121,13 @@ static void select_serializer(const char *name, void *data) return; if ((s = OSSL_SERIALIZER_fetch(d->libctx, name, d->propquery)) != NULL) { - if (d->first == NULL && s->serialize_data != NULL) { - d->first = s; - } else if (OSSL_SERIALIZER_provider(s) == d->desired_provider - && s->serialize_object != NULL) { + if (OSSL_SERIALIZER_provider(s) == d->desired_provider + && s->serialize_object != NULL) { OSSL_SERIALIZER_free(d->first); d->first = NULL; d->desired = s; + } else if (d->first == NULL && s->serialize_data != NULL) { + d->first = s; } else { OSSL_SERIALIZER_free(s); } @@ -338,12 +338,14 @@ OSSL_SERIALIZER_CTX *OSSL_SERIALIZER_CTX_new_by_EVP_PKEY(const EVP_PKEY *pkey, OSSL_SERIALIZER_free(sel_data.first); OSSL_SERIALIZER_free(sel_data.desired); - current_props = - ossl_parse_property(libctx, OSSL_SERIALIZER_properties(ser)); - if (ossl_property_match_count(check, current_props) > 0) - selection = OSSL_KEYMGMT_SELECT_ALL_PARAMETERS; + if (ser != NULL) { + current_props = + ossl_parse_property(libctx, OSSL_SERIALIZER_properties(ser)); + if (ossl_property_match_count(check, current_props) > 0) + selection = OSSL_KEYMGMT_SELECT_ALL_PARAMETERS; + ossl_property_free(current_props); + } - ossl_property_free(current_props); ossl_property_free(check); }