From: Matt Caswell Date: Thu, 21 May 2020 10:33:53 +0000 (+0100) Subject: Always create a key when importing X-Git-Tag: openssl-3.0.0-alpha4~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11391da217b5d07dd30dd4c1890b5320fa56be18;p=thirdparty%2Fopenssl.git Always create a key when importing Even if there is no data to import we should still create an empty key. Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/11898) --- diff --git a/crypto/evp/keymgmt_lib.c b/crypto/evp/keymgmt_lib.c index a712233043e..68ed74b23a2 100644 --- a/crypto/evp/keymgmt_lib.c +++ b/crypto/evp/keymgmt_lib.c @@ -39,6 +39,13 @@ static int try_import(const OSSL_PARAM params[], void *arg) { struct import_data_st *data = arg; + /* Just in time creation of keydata */ + if (data->keydata == NULL + && (data->keydata = evp_keymgmt_newdata(data->keymgmt)) == NULL) { + ERR_raise(ERR_LIB_EVP, ERR_R_MALLOC_FAILURE); + return 0; + } + /* * It's fine if there was no data to transfer, we just end up with an * empty destination key. @@ -46,13 +53,6 @@ static int try_import(const OSSL_PARAM params[], void *arg) if (params[0].key == NULL) return 1; - /* Just in time creation of keydata, if needed */ - if (data->keydata == NULL - && (data->keydata = evp_keymgmt_newdata(data->keymgmt)) == NULL) { - ERR_raise(ERR_LIB_EVP, ERR_R_MALLOC_FAILURE); - return 0; - } - return evp_keymgmt_import(data->keymgmt, data->keydata, data->selection, params); }