md = computed_md;
}
siglen = EVP_PKEY_get_size(si->pkey);
- sig = OPENSSL_malloc(siglen);
- if (sig == NULL)
+ if (siglen == 0 || (sig = OPENSSL_malloc(siglen)) == NULL)
goto err;
if (EVP_PKEY_sign(pctx, sig, &siglen, md, mdlen) <= 0) {
OPENSSL_free(sig);
ERR_raise(ERR_LIB_CMS, CMS_R_OPERATION_UNSUPPORTED);
goto err;
}
- sig = OPENSSL_malloc(EVP_PKEY_get_size(si->pkey));
- if (sig == NULL)
+ siglen = EVP_PKEY_get_size(si->pkey);
+ if (siglen == 0 || (sig = OPENSSL_malloc(siglen)) == NULL)
goto err;
if (!EVP_SignFinal_ex(mctx, sig, &siglen, si->pkey,
ossl_cms_ctx_get0_libctx(ctx),
goto err;
} else {
unsigned char *abuf = NULL;
- unsigned int abuflen;
- abuflen = EVP_PKEY_get_size(si->pkey);
- abuf = OPENSSL_malloc(abuflen);
- if (abuf == NULL)
+ unsigned int abuflen = EVP_PKEY_get_size(si->pkey);
+
+ if (abuflen == 0 || (abuf = OPENSSL_malloc(abuflen)) == NULL)
goto err;
if (!EVP_SignFinal_ex(ctx_tmp, abuf, &abuflen, si->pkey,