if (dstctx->kdf_ukm == NULL)
goto err;
}
- dstctx->kdf_cekalg = OPENSSL_strdup(srcctx->kdf_cekalg);
+
+ if (srcctx->kdf_cekalg != NULL) {
+ dstctx->kdf_cekalg = OPENSSL_strdup(srcctx->kdf_cekalg);
+ if (dstctx->kdf_cekalg == NULL)
+ goto err;
+ }
return dstctx;
err:
p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_CEK_ALG);
if (p != NULL) {
str = name;
- if (!OSSL_PARAM_get_utf8_string(p, &str, sizeof(name)))
- return 0;
- pdhctx->kdf_cekalg = OPENSSL_strdup(name);
+
+ OPENSSL_free(pdhctx->kdf_cekalg);
+ pdhctx->kdf_cekalg = NULL;
+ if (p->data != NULL && p->data_size != 0) {
+ if (!OSSL_PARAM_get_utf8_string(p, &str, sizeof(name)))
+ return 0;
+ pdhctx->kdf_cekalg = OPENSSL_strdup(name);
+ if (pdhctx->kdf_cekalg == NULL)
+ return 0;
+ }
}
return 1;
}