if (!ffc_bn_cpy(&dst->p, src->p)
|| !ffc_bn_cpy(&dst->g, src->g)
|| !ffc_bn_cpy(&dst->q, src->q)
- || !ffc_bn_cpy(&dst->j, src->j))
+ || !ffc_bn_cpy(&dst->j, src->j)) {
+ ossl_ffc_params_cleanup(dst);
return 0;
+ }
dst->mdname = src->mdname;
dst->mdprops = src->mdprops;
dst->seedlen = src->seedlen;
if (src->seed != NULL) {
dst->seed = OPENSSL_memdup(src->seed, src->seedlen);
- if (dst->seed == NULL)
+ if (dst->seed == NULL) {
+ ossl_ffc_params_cleanup(dst);
return 0;
+ }
} else {
dst->seed = NULL;
}