Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
runtime
提交
b5a27cd0
R
runtime
项目概览
dotNET Platform
/
runtime
12 个月 前同步成功
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
runtime
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
b5a27cd0
编写于
10月 21, 2022
作者:
G
github-actions[bot]
提交者:
GitHub
10月 21, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sync shared code from aspnetcore (#77323)
上级
1b4f17b8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
2 deletion
+37
-2
src/libraries/Common/src/System/Net/Http/aspnetcore/Http2/Hpack/HPackDecoder.cs
...rc/System/Net/Http/aspnetcore/Http2/Hpack/HPackDecoder.cs
+2
-2
src/libraries/Common/tests/Tests/System/Net/aspnetcore/Http2/HPackDecoderTest.cs
...sts/Tests/System/Net/aspnetcore/Http2/HPackDecoderTest.cs
+35
-0
未找到文件。
src/libraries/Common/src/System/Net/Http/aspnetcore/Http2/Hpack/HPackDecoder.cs
浏览文件 @
b5a27cd0
...
...
@@ -577,7 +577,7 @@ private void OnStringLength(int length, State nextState)
throw
new
HPackDecodingException
(
SR
.
Format
(
SR
.
net_http_headers_exceeded_length
,
_maxHeadersLength
));
}
_stringOctets
=
new
byte
[
Math
.
Max
(
length
,
_stringOctets
.
Length
*
2
)];
_stringOctets
=
new
byte
[
Math
.
Max
(
length
,
Math
.
Min
(
_stringOctets
.
Length
*
2
,
_maxHeadersLength
)
)];
}
_stringLength
=
length
;
...
...
@@ -625,7 +625,7 @@ private void EnsureStringCapacity(ref byte[] dst)
{
if
(
dst
.
Length
<
_stringLength
)
{
dst
=
new
byte
[
Math
.
Max
(
_stringLength
,
dst
.
Length
*
2
)];
dst
=
new
byte
[
Math
.
Max
(
_stringLength
,
Math
.
Min
(
dst
.
Length
*
2
,
_maxHeadersLength
)
)];
}
}
...
...
src/libraries/Common/tests/Tests/System/Net/aspnetcore/Http2/HPackDecoderTest.cs
浏览文件 @
b5a27cd0
...
...
@@ -493,6 +493,41 @@ public void DecodesStringLength_LimitConfigurable()
Assert
.
Equal
(
string8193
,
_handler
.
DecodedHeaders
[
string8193
]);
}
[
Fact
]
public
void
DecodesStringLength_ExceedsLimit_Throws
()
{
HPackDecoder
decoder
=
new
HPackDecoder
(
DynamicTableInitialMaxSize
,
MaxHeaderFieldSize
+
1
);
string
string8191
=
new
string
(
'a'
,
MaxHeaderFieldSize
-
1
);
string
string8193
=
new
string
(
'a'
,
MaxHeaderFieldSize
+
1
);
string
string8194
=
new
string
(
'a'
,
MaxHeaderFieldSize
+
2
);
var
bytes
=
new
byte
[
3
];
var
success
=
IntegerEncoder
.
Encode
(
8194
,
7
,
bytes
,
out
var
written
);
byte
[]
encoded
=
_literalHeaderFieldWithoutIndexingNewName
.
Concat
(
new
byte
[]
{
0x7f
,
0x80
,
0x3f
})
// 8191 encoded with 7-bit prefix, no Huffman encoding
.
Concat
(
Encoding
.
ASCII
.
GetBytes
(
string8191
))
.
Concat
(
new
byte
[]
{
0x7f
,
0x80
,
0x3f
})
// 8191 encoded with 7-bit prefix, no Huffman encoding
.
Concat
(
Encoding
.
ASCII
.
GetBytes
(
string8191
))
.
Concat
(
_literalHeaderFieldWithoutIndexingNewName
)
.
Concat
(
new
byte
[]
{
0x7f
,
0x82
,
0x3f
})
// 8193 encoded with 7-bit prefix, no Huffman encoding
.
Concat
(
Encoding
.
ASCII
.
GetBytes
(
string8193
))
.
Concat
(
new
byte
[]
{
0x7f
,
0x82
,
0x3f
})
// 8193 encoded with 7-bit prefix, no Huffman encoding
.
Concat
(
Encoding
.
ASCII
.
GetBytes
(
string8193
))
.
Concat
(
_literalHeaderFieldWithoutIndexingNewName
)
.
Concat
(
new
byte
[]
{
0x7f
,
0x83
,
0x3f
})
// 8194 encoded with 7-bit prefix, no Huffman encoding
.
Concat
(
Encoding
.
ASCII
.
GetBytes
(
string8194
))
.
Concat
(
new
byte
[]
{
0x7f
,
0x83
,
0x3f
})
// 8194 encoded with 7-bit prefix, no Huffman encoding
.
Concat
(
Encoding
.
ASCII
.
GetBytes
(
string8194
))
.
ToArray
();
var
ex
=
Assert
.
Throws
<
HPackDecodingException
>(()
=>
decoder
.
Decode
(
encoded
,
endHeaders
:
true
,
handler
:
_handler
));
Assert
.
Equal
(
SR
.
Format
(
SR
.
net_http_headers_exceeded_length
,
MaxHeaderFieldSize
+
1
),
ex
.
Message
);
Assert
.
Equal
(
string8191
,
_handler
.
DecodedHeaders
[
string8191
]);
Assert
.
Equal
(
string8193
,
_handler
.
DecodedHeaders
[
string8193
]);
Assert
.
False
(
_handler
.
DecodedHeaders
.
ContainsKey
(
string8194
));
}
[
Fact
]
public
void
DecodesStringLength_IndividualBytes
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录