gpt4 book ai didi

linux - 如何修复openssl的malloc失败错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:11 25 4
gpt4 key购买 nike

我正在使用 openssl 加密文件,但出现 malloc 错误,如下所示。

openssl version
OpenSSL 1.0.2j-fips 26 Sep 2016

openssl command
openssl cms -sign -in infile -signer file.crt.pem -inkey file.key.pem -CAfile CAfile -out outfile -keyopt rsa_padding_mode:pss -certfile by_hash/81908841

Errors
1435735688:error:2E0A40AF:CMS routines:CMS_add0_cert:certificate already present:cms_lib.c:462:
1435735688:error:2E094041:CMS routines:CMS_sign:malloc failure:cms_smime.c:461:

请注意,我 100% 确定我提供的参数 100% 正确(即 infile、outfile、certfile、keyfile、cafile 和 hash_file)

提前致谢

最佳答案

How to fix malloc failure error of openssl?

如果我正确解析,CMS_add1_cert 似乎失败了。这可能不是内存错误(或者可能是由于解析错误导致尺寸参数过大)。

OpenSSL 1.0.2.j 是 Commit e216bf9d7ca7 。这是cms.c ,以及 cms_smime.c:461 处的函数如下所示。

第461行是代码:

merr:
CMSerr(CMS_F_CMS_SIGN, ERR_R_MALLOC_FAILURE);

我猜它来自于此:

for (i = 0; i < sk_X509_num(certs); i++) {
X509 *x = sk_X509_value(certs, i);
if (!CMS_add1_cert(cms, x))
goto merr;
}

我们无法透露更多信息,因为没有足够的信息,例如证书和其他参数。下一步是安装符号,然后在调试器下单步执行代码。

<小时/>

这里是CMS_sign,它提供了返回错误的函数。

CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey,
STACK_OF(X509) *certs, BIO *data,
unsigned int flags)
{
CMS_ContentInfo *cms;
int i;

cms = CMS_ContentInfo_new();
if (!cms || !CMS_SignedData_init(cms))
goto merr;

if (pkey && !CMS_add1_signer(cms, signcert, pkey, NULL, flags)) {
CMSerr(CMS_F_CMS_SIGN, CMS_R_ADD_SIGNER_ERROR);
goto err;
}

for (i = 0; i < sk_X509_num(certs); i++) {
X509 *x = sk_X509_value(certs, i);
if (!CMS_add1_cert(cms, x))
goto merr;
}

if (!(flags & CMS_DETACHED))
CMS_set_detached(cms, 0);

if ((flags & (CMS_STREAM | CMS_PARTIAL))
|| CMS_final(cms, data, NULL, flags))
return cms;
else
goto err;

merr:
CMSerr(CMS_F_CMS_SIGN, ERR_R_MALLOC_FAILURE);

err:
if (cms)
CMS_ContentInfo_free(cms);
return NULL;
}

关于linux - 如何修复openssl的malloc失败错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com