Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
34994068
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
9 个月 前同步成功
通知
8
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看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
34994068
编写于
7月 27, 2007
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Respect ISO aliasing rules.
PR: 1296
上级
afaad0ad
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
21 deletion
+21
-21
crypto/asn1/x_name.c
crypto/asn1/x_name.c
+21
-21
未找到文件。
crypto/asn1/x_name.c
浏览文件 @
34994068
...
...
@@ -185,43 +185,43 @@ static int x509_name_ex_d2i(ASN1_VALUE **val,
int
tag
,
int
aclass
,
char
opt
,
ASN1_TLC
*
ctx
)
{
const
unsigned
char
*
p
=
*
in
,
*
q
;
STACK
*
intname
=
NULL
,
**
intname_pp
=
&
intname
;
union
{
STACK
*
s
;
ASN1_VALUE
*
a
;
}
intname
=
{
NULL
};
union
{
X509_NAME
*
x
;
ASN1_VALUE
*
a
;
}
nm
=
{
NULL
};
int
i
,
j
,
ret
;
X509_NAME
*
nm
=
NULL
,
**
nm_pp
=
&
nm
;
STACK_OF
(
X509_NAME_ENTRY
)
*
entries
;
X509_NAME_ENTRY
*
entry
;
q
=
p
;
/* Get internal representation of Name */
ret
=
ASN1_item_ex_d2i
(
(
ASN1_VALUE
**
)
intname_pp
,
ret
=
ASN1_item_ex_d2i
(
&
intname
.
a
,
&
p
,
len
,
ASN1_ITEM_rptr
(
X509_NAME_INTERNAL
),
tag
,
aclass
,
opt
,
ctx
);
if
(
ret
<=
0
)
return
ret
;
if
(
*
val
)
x509_name_ex_free
(
val
,
NULL
);
if
(
!
x509_name_ex_new
(
(
ASN1_VALUE
**
)
nm_pp
,
NULL
))
goto
err
;
if
(
!
x509_name_ex_new
(
&
nm
.
a
,
NULL
))
goto
err
;
/* We've decoded it: now cache encoding */
if
(
!
BUF_MEM_grow
(
nm
->
bytes
,
p
-
q
))
goto
err
;
memcpy
(
nm
->
bytes
->
data
,
q
,
p
-
q
);
if
(
!
BUF_MEM_grow
(
nm
.
x
->
bytes
,
p
-
q
))
goto
err
;
memcpy
(
nm
.
x
->
bytes
->
data
,
q
,
p
-
q
);
/* Convert internal representation to X509_NAME structure */
for
(
i
=
0
;
i
<
sk_num
(
intname
);
i
++
)
{
entries
=
(
STACK_OF
(
X509_NAME_ENTRY
)
*
)
sk_value
(
intname
,
i
);
for
(
i
=
0
;
i
<
sk_num
(
intname
.
s
);
i
++
)
{
entries
=
(
STACK_OF
(
X509_NAME_ENTRY
)
*
)
sk_value
(
intname
.
s
,
i
);
for
(
j
=
0
;
j
<
sk_X509_NAME_ENTRY_num
(
entries
);
j
++
)
{
entry
=
sk_X509_NAME_ENTRY_value
(
entries
,
j
);
entry
->
set
=
i
;
if
(
!
sk_X509_NAME_ENTRY_push
(
nm
->
entries
,
entry
))
if
(
!
sk_X509_NAME_ENTRY_push
(
nm
.
x
->
entries
,
entry
))
goto
err
;
}
sk_X509_NAME_ENTRY_free
(
entries
);
}
sk_free
(
intname
);
ret
=
x509_name_canon
(
nm
);
sk_free
(
intname
.
s
);
ret
=
x509_name_canon
(
nm
.
x
);
if
(
!
ret
)
goto
err
;
nm
->
modified
=
0
;
*
val
=
(
ASN1_VALUE
*
)
nm
;
nm
.
x
->
modified
=
0
;
*
val
=
nm
.
a
;
*
in
=
p
;
return
ret
;
err:
...
...
@@ -251,35 +251,35 @@ static int x509_name_ex_i2d(ASN1_VALUE **val, unsigned char **out, const ASN1_IT
static
int
x509_name_encode
(
X509_NAME
*
a
)
{
STACK
*
intname
=
NULL
,
**
intname_pp
=
&
intname
;
union
{
STACK
*
s
;
ASN1_VALUE
*
a
;
}
intname
=
{
NULL
}
;
int
len
;
unsigned
char
*
p
;
STACK_OF
(
X509_NAME_ENTRY
)
*
entries
=
NULL
;
X509_NAME_ENTRY
*
entry
;
int
i
,
set
=
-
1
;
intname
=
sk_new_null
();
if
(
!
intname
)
goto
memerr
;
intname
.
s
=
sk_new_null
();
if
(
!
intname
.
s
)
goto
memerr
;
for
(
i
=
0
;
i
<
sk_X509_NAME_ENTRY_num
(
a
->
entries
);
i
++
)
{
entry
=
sk_X509_NAME_ENTRY_value
(
a
->
entries
,
i
);
if
(
entry
->
set
!=
set
)
{
entries
=
sk_X509_NAME_ENTRY_new_null
();
if
(
!
entries
)
goto
memerr
;
if
(
!
sk_push
(
intname
,
(
char
*
)
entries
))
goto
memerr
;
if
(
!
sk_push
(
intname
.
s
,
(
char
*
)
entries
))
goto
memerr
;
set
=
entry
->
set
;
}
if
(
!
sk_X509_NAME_ENTRY_push
(
entries
,
entry
))
goto
memerr
;
}
len
=
ASN1_item_ex_i2d
(
(
ASN1_VALUE
**
)
intname_pp
,
NULL
,
len
=
ASN1_item_ex_i2d
(
&
intname
.
a
,
NULL
,
ASN1_ITEM_rptr
(
X509_NAME_INTERNAL
),
-
1
,
-
1
);
if
(
!
BUF_MEM_grow
(
a
->
bytes
,
len
))
goto
memerr
;
p
=
(
unsigned
char
*
)
a
->
bytes
->
data
;
ASN1_item_ex_i2d
(
(
ASN1_VALUE
**
)
intname_pp
,
ASN1_item_ex_i2d
(
&
intname
.
a
,
&
p
,
ASN1_ITEM_rptr
(
X509_NAME_INTERNAL
),
-
1
,
-
1
);
sk_pop_free
(
intname
,
sk_internal_free
);
sk_pop_free
(
intname
.
s
,
sk_internal_free
);
a
->
modified
=
0
;
return
len
;
memerr:
sk_pop_free
(
intname
,
sk_internal_free
);
sk_pop_free
(
intname
.
s
,
sk_internal_free
);
ASN1err
(
ASN1_F_X509_NAME_ENCODE
,
ERR_R_MALLOC_FAILURE
);
return
-
1
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录