Fix export of provided EC keys
The exporter freed a buffer too soon, and there were attempts to use
its data later, which was overwritten by something else at that
point.
@@ -352,13 +352,10 @@ int ec_export(void *keydata, int selection, OSSL_CALLBACK *param_cb,
if ((selection & OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS) != 0)
ok = ok && otherparams_to_params(ec, tmpl, NULL);
- if (!ok
- || (params = OSSL_PARAM_BLD_to_param(tmpl)) == NULL)
- goto err;
-
+ if (ok && (params = OSSL_PARAM_BLD_to_param(tmpl)) != NULL)
ok = param_cb(params, cbarg);
+
OSSL_PARAM_BLD_free_params(params);
-err:
OSSL_PARAM_BLD_free(tmpl);
OPENSSL_free(pub_key);
return ok;
