Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
689f9fab
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
689f9fab
编写于
2月 03, 2007
作者:
N
Nils Larsch
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix potential memory leaks
PR: 1462
上级
82686bdc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
85 addition
and
20 deletion
+85
-20
crypto/pkcs7/pk7_doit.c
crypto/pkcs7/pk7_doit.c
+39
-8
crypto/pkcs7/pk7_lib.c
crypto/pkcs7/pk7_lib.c
+33
-7
crypto/pkcs7/pk7_smime.c
crypto/pkcs7/pk7_smime.c
+13
-5
未找到文件。
crypto/pkcs7/pk7_doit.c
浏览文件 @
689f9fab
...
...
@@ -331,7 +331,9 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
keylen
=
EVP_CIPHER_key_length
(
evp_cipher
);
ivlen
=
EVP_CIPHER_iv_length
(
evp_cipher
);
xalg
->
algorithm
=
OBJ_nid2obj
(
EVP_CIPHER_type
(
evp_cipher
));
if
(
ivlen
>
0
)
RAND_pseudo_bytes
(
iv
,
ivlen
);
if
(
ivlen
>
0
)
if
(
RAND_pseudo_bytes
(
iv
,
ivlen
)
<=
0
)
goto
err
;
if
(
EVP_CipherInit_ex
(
ctx
,
evp_cipher
,
NULL
,
NULL
,
NULL
,
1
)
<=
0
)
goto
err
;
if
(
EVP_CIPHER_CTX_rand_key
(
ctx
,
key
)
<=
0
)
...
...
@@ -340,10 +342,13 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
goto
err
;
if
(
ivlen
>
0
)
{
if
(
xalg
->
parameter
==
NULL
)
xalg
->
parameter
=
ASN1_TYPE_new
();
if
(
xalg
->
parameter
==
NULL
)
{
xalg
->
parameter
=
ASN1_TYPE_new
();
if
(
xalg
->
parameter
==
NULL
)
goto
err
;
}
if
(
EVP_CIPHER_param_to_asn1
(
ctx
,
xalg
->
parameter
)
<
0
)
goto
err
;
goto
err
;
}
/* Lets do the pub key stuff :-) */
...
...
@@ -371,6 +376,8 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
if
(
bio
==
NULL
)
{
bio
=
BIO_new
(
BIO_s_mem
());
if
(
bio
==
NULL
)
goto
err
;
BIO_set_mem_eof_return
(
bio
,
0
);
}
}
...
...
@@ -613,6 +620,8 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
bio
=
BIO_new
(
BIO_s_mem
());
BIO_set_mem_eof_return
(
bio
,
0
);
}
if
(
bio
==
NULL
)
goto
err
;
#endif
}
BIO_push
(
out
,
bio
);
...
...
@@ -1080,8 +1089,13 @@ PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx)
int
i
;
i
=
OBJ_obj2nid
(
p7
->
type
);
if
(
i
!=
NID_pkcs7_signedAndEnveloped
)
return
(
NULL
);
if
(
i
!=
NID_pkcs7_signedAndEnveloped
)
return
NULL
;
if
(
p7
->
d
.
signed_and_enveloped
==
NULL
)
return
NULL
;
rsk
=
p7
->
d
.
signed_and_enveloped
->
recipientinfo
;
if
(
rsk
==
NULL
)
return
NULL
;
ri
=
sk_PKCS7_RECIP_INFO_value
(
rsk
,
0
);
if
(
sk_PKCS7_RECIP_INFO_num
(
rsk
)
<=
idx
)
return
(
NULL
);
ri
=
sk_PKCS7_RECIP_INFO_value
(
rsk
,
idx
);
...
...
@@ -1135,6 +1149,8 @@ int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
if
(
p7si
->
auth_attr
!=
NULL
)
sk_X509_ATTRIBUTE_pop_free
(
p7si
->
auth_attr
,
X509_ATTRIBUTE_free
);
p7si
->
auth_attr
=
sk_X509_ATTRIBUTE_dup
(
sk
);
if
(
p7si
->
auth_attr
==
NULL
)
return
0
;
for
(
i
=
0
;
i
<
sk_X509_ATTRIBUTE_num
(
sk
);
i
++
)
{
if
((
sk_X509_ATTRIBUTE_set
(
p7si
->
auth_attr
,
i
,
...
...
@@ -1153,6 +1169,8 @@ int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, STACK_OF(X509_ATTRIBUTE) *sk)
sk_X509_ATTRIBUTE_pop_free
(
p7si
->
unauth_attr
,
X509_ATTRIBUTE_free
);
p7si
->
unauth_attr
=
sk_X509_ATTRIBUTE_dup
(
sk
);
if
(
p7si
->
unauth_attr
==
NULL
)
return
0
;
for
(
i
=
0
;
i
<
sk_X509_ATTRIBUTE_num
(
sk
);
i
++
)
{
if
((
sk_X509_ATTRIBUTE_set
(
p7si
->
unauth_attr
,
i
,
...
...
@@ -1183,9 +1201,16 @@ static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype,
if
(
*
sk
==
NULL
)
{
*
sk
=
sk_X509_ATTRIBUTE_new_null
();
if
(
*
sk
==
NULL
)
return
0
;
new_attrib:
attr
=
X509_ATTRIBUTE_create
(
nid
,
atrtype
,
value
);
sk_X509_ATTRIBUTE_push
(
*
sk
,
attr
);
if
(
!
(
attr
=
X509_ATTRIBUTE_create
(
nid
,
atrtype
,
value
)))
return
0
;
if
(
!
sk_X509_ATTRIBUTE_push
(
*
sk
,
attr
))
{
X509_ATTRIBUTE_free
(
attr
);
return
0
;
}
}
else
{
...
...
@@ -1198,7 +1223,13 @@ new_attrib:
{
X509_ATTRIBUTE_free
(
attr
);
attr
=
X509_ATTRIBUTE_create
(
nid
,
atrtype
,
value
);
sk_X509_ATTRIBUTE_set
(
*
sk
,
i
,
attr
);
if
(
attr
==
NULL
)
return
0
;
if
(
!
sk_X509_ATTRIBUTE_set
(
*
sk
,
i
,
attr
))
{
X509_ATTRIBUTE_free
(
attr
);
return
0
;
}
goto
end
;
}
}
...
...
crypto/pkcs7/pk7_lib.c
浏览文件 @
689f9fab
...
...
@@ -272,16 +272,23 @@ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *psi)
if
(
!
j
)
/* we need to add another algorithm */
{
if
(
!
(
alg
=
X509_ALGOR_new
())
||
!
(
alg
->
parameter
=
ASN1_TYPE_new
()))
{
||
!
(
alg
->
parameter
=
ASN1_TYPE_new
()))
{
X509_ALGOR_free
(
alg
);
PKCS7err
(
PKCS7_F_PKCS7_ADD_SIGNER
,
ERR_R_MALLOC_FAILURE
);
return
(
0
);
}
}
alg
->
algorithm
=
OBJ_nid2obj
(
nid
);
alg
->
parameter
->
type
=
V_ASN1_NULL
;
sk_X509_ALGOR_push
(
md_sk
,
alg
);
if
(
!
sk_X509_ALGOR_push
(
md_sk
,
alg
))
{
X509_ALGOR_free
(
alg
);
return
0
;
}
}
sk_PKCS7_SIGNER_INFO_push
(
signer_sk
,
psi
);
if
(
!
sk_PKCS7_SIGNER_INFO_push
(
signer_sk
,
psi
))
return
0
;
return
(
1
);
}
...
...
@@ -306,8 +313,17 @@ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509)
if
(
*
sk
==
NULL
)
*
sk
=
sk_X509_new_null
();
if
(
*
sk
==
NULL
)
{
PKCS7err
(
PKCS7_F_PKCS7_ADD_CERTIFICATE
,
ERR_R_MALLOC_FAILURE
);
return
0
;
}
CRYPTO_add
(
&
x509
->
references
,
1
,
CRYPTO_LOCK_X509
);
sk_X509_push
(
*
sk
,
x509
);
if
(
!
sk_X509_push
(
*
sk
,
x509
))
{
X509_free
(
x509
);
return
0
;
}
return
(
1
);
}
...
...
@@ -332,9 +348,18 @@ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl)
if
(
*
sk
==
NULL
)
*
sk
=
sk_X509_CRL_new_null
();
if
(
*
sk
==
NULL
)
{
PKCS7err
(
PKCS7_F_PKCS7_ADD_CERTIFICATE
,
ERR_R_MALLOC_FAILURE
);
return
0
;
}
CRYPTO_add
(
&
crl
->
references
,
1
,
CRYPTO_LOCK_X509_CRL
);
sk_X509_CRL_push
(
*
sk
,
crl
);
if
(
!
sk_X509_CRL_push
(
*
sk
,
crl
))
{
X509_CRL_free
(
crl
);
return
0
;
}
return
(
1
);
}
...
...
@@ -496,7 +521,8 @@ int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri)
return
(
0
);
}
sk_PKCS7_RECIP_INFO_push
(
sk
,
ri
);
if
(
!
sk_PKCS7_RECIP_INFO_push
(
sk
,
ri
))
return
0
;
return
(
1
);
}
...
...
crypto/pkcs7/pk7_smime.c
浏览文件 @
689f9fab
...
...
@@ -378,7 +378,8 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
tmpin
=
indata
;
p7bio
=
PKCS7_dataInit
(
p7
,
tmpin
);
if
(
!
(
p7bio
=
PKCS7_dataInit
(
p7
,
tmpin
)))
goto
err
;
if
(
flags
&
PKCS7_TEXT
)
{
if
(
!
(
tmpout
=
BIO_new
(
BIO_s_mem
())))
{
...
...
@@ -483,7 +484,10 @@ STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags)
return
0
;
}
sk_X509_push
(
signers
,
signer
);
if
(
!
sk_X509_push
(
signers
,
signer
))
{
sk_X509_free
(
signers
);
return
NULL
;
}
}
return
signers
;
}
...
...
@@ -503,8 +507,9 @@ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
return
NULL
;
}
PKCS7_set_type
(
p7
,
NID_pkcs7_enveloped
);
if
(
!
PKCS7_set_cipher
(
p7
,
cipher
))
{
if
(
!
PKCS7_set_type
(
p7
,
NID_pkcs7_enveloped
))
goto
err
;
if
(
!
PKCS7_set_cipher
(
p7
,
cipher
))
{
PKCS7err
(
PKCS7_F_PKCS7_ENCRYPT
,
PKCS7_R_ERROR_SETTING_CIPHER
);
goto
err
;
}
...
...
@@ -526,7 +531,7 @@ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
err:
BIO_free
(
p7bio
);
BIO_free
_all
(
p7bio
);
PKCS7_free
(
p7
);
return
NULL
;
...
...
@@ -564,10 +569,13 @@ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags)
/* Encrypt BIOs can't do BIO_gets() so add a buffer BIO */
if
(
!
(
tmpbuf
=
BIO_new
(
BIO_f_buffer
())))
{
PKCS7err
(
PKCS7_F_PKCS7_DECRYPT
,
ERR_R_MALLOC_FAILURE
);
BIO_free_all
(
tmpmem
);
return
0
;
}
if
(
!
(
bread
=
BIO_push
(
tmpbuf
,
tmpmem
)))
{
PKCS7err
(
PKCS7_F_PKCS7_DECRYPT
,
ERR_R_MALLOC_FAILURE
);
BIO_free_all
(
tmpbuf
);
BIO_free_all
(
tmpmem
);
return
0
;
}
ret
=
SMIME_text
(
bread
,
data
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录