Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
1904d211
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看板
提交
1904d211
编写于
12月 12, 2014
作者:
M
Matt Caswell
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
DTLS fixes for signed/unsigned issues
Reviewed-by:
N
Emilia Käsper
<
emilia@openssl.org
>
上级
129c81b9
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
27 addition
and
9 deletion
+27
-9
ssl/d1_both.c
ssl/d1_both.c
+27
-9
未找到文件。
ssl/d1_both.c
浏览文件 @
1904d211
...
...
@@ -259,9 +259,9 @@ static int dtls1_query_mtu(SSL *s)
int
dtls1_do_write
(
SSL
*
s
,
int
type
)
{
int
ret
;
int
curr_mtu
;
unsigned
int
curr_mtu
;
int
retry
=
1
;
unsigned
int
len
,
frag_off
,
mac_size
,
blocksize
;
unsigned
int
len
,
frag_off
,
mac_size
,
blocksize
,
used_len
;
if
(
!
dtls1_query_mtu
(
s
))
return
-
1
;
...
...
@@ -289,10 +289,15 @@ int dtls1_do_write(SSL *s, int type)
blocksize
=
0
;
frag_off
=
0
;
while
(
s
->
init_num
)
/* s->init_num shouldn't ever be < 0...but just in case */
while
(
s
->
init_num
>
0
)
{
curr_mtu
=
s
->
d1
->
mtu
-
BIO_wpending
(
SSL_get_wbio
(
s
))
-
DTLS1_RT_HEADER_LENGTH
-
mac_size
-
blocksize
;
used_len
=
BIO_wpending
(
SSL_get_wbio
(
s
))
+
DTLS1_RT_HEADER_LENGTH
+
mac_size
+
blocksize
;
if
(
s
->
d1
->
mtu
>
used_len
)
curr_mtu
=
s
->
d1
->
mtu
-
used_len
;
else
curr_mtu
=
0
;
if
(
curr_mtu
<=
DTLS1_HM_HEADER_LENGTH
)
{
...
...
@@ -300,15 +305,23 @@ int dtls1_do_write(SSL *s, int type)
ret
=
BIO_flush
(
SSL_get_wbio
(
s
));
if
(
ret
<=
0
)
return
ret
;
curr_mtu
=
s
->
d1
->
mtu
-
DTLS1_RT_HEADER_LENGTH
-
mac_size
-
blocksize
;
used_len
=
DTLS1_RT_HEADER_LENGTH
+
mac_size
+
blocksize
;
if
(
s
->
d1
->
mtu
>
used_len
+
DTLS1_HM_HEADER_LENGTH
)
curr_mtu
=
s
->
d1
->
mtu
-
used_len
;
else
/* Shouldn't happen */
return
-
1
;
}
if
(
s
->
init_num
>
curr_mtu
)
/* We just checked that s->init_num > 0 so this cast should be safe */
if
(((
unsigned
int
)
s
->
init_num
)
>
curr_mtu
)
len
=
curr_mtu
;
else
len
=
s
->
init_num
;
/* Shouldn't ever happen */
if
(
len
>
INT_MAX
)
len
=
INT_MAX
;
/* XDTLS: this function is too long. split out the CCS part */
if
(
type
==
SSL3_RT_HANDSHAKE
)
...
...
@@ -319,12 +332,17 @@ int dtls1_do_write(SSL *s, int type)
s
->
init_off
-=
DTLS1_HM_HEADER_LENGTH
;
s
->
init_num
+=
DTLS1_HM_HEADER_LENGTH
;
if
(
s
->
init_num
>
curr_mtu
)
/* We just checked that s->init_num > 0 so this cast should be safe */
if
(((
unsigned
int
)
s
->
init_num
)
>
curr_mtu
)
len
=
curr_mtu
;
else
len
=
s
->
init_num
;
}
/* Shouldn't ever happen */
if
(
len
>
INT_MAX
)
len
=
INT_MAX
;
if
(
len
<
DTLS1_HM_HEADER_LENGTH
)
{
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录