File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed
src/Shared/test/Shared.Tests/runtime/Http2 Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -151,6 +151,25 @@ public void DecodesIndexedHeaderField_DynamicTable()
151
151
Assert . Equal ( _headerValueString , _handler . DecodedHeaders [ _headerNameString ] ) ;
152
152
}
153
153
154
+ [ Fact ]
155
+ public void DecodesIndexedHeaderField_DynamicTable_ReferencedEntryRemovedOnInsertion ( )
156
+ {
157
+ // Pre-populate the dynamic table so we'll have something to reference.
158
+ // This entry will have index 62 (0x3E).
159
+ _dynamicTable . Insert ( _headerNameBytes , _headerValueBytes ) ;
160
+ Assert . Equal ( 1 , _dynamicTable . Count ) ;
161
+
162
+ Assert . InRange ( _dynamicTable . MaxSize , 1 , _literalHeaderNameBytes . Length ) ; // Assert that our string will be too big
163
+
164
+ byte [ ] encoded = ( new byte [ ] { 0x40 | 0x3E } ) // Indexing enabled (0x40) | dynamic table (62 = 0x3E) as a 6-integer,
165
+ . Concat ( _literalHeaderName ) // A header value that's too large to fit in the dynamic table
166
+ . ToArray ( ) ;
167
+
168
+ _decoder . Decode ( encoded , endHeaders : true , handler : _handler ) ;
169
+ Assert . Equal ( 0 , _dynamicTable . Count ) ; // The large entry caused the table to be wiped
170
+ Assert . Equal ( _literalHeaderNameString , _handler . DecodedHeaders [ _headerNameString ] ) ; // but we got the header anyway
171
+ }
172
+
154
173
[ Fact ]
155
174
public void DecodesIndexedHeaderField_OutOfRange_Error ( )
156
175
{
You can’t perform that action at this time.
0 commit comments