Header table size UINT32_MAX must be accepted

This commit is contained in:
Tatsuhiro Tsujikawa 2015-07-30 21:19:25 +09:00
parent ebf27e6523
commit 8c701bb139
4 changed files with 3 additions and 14 deletions

View File

@ -784,9 +784,6 @@ int nghttp2_iv_check(const nghttp2_settings_entry *iv, size_t niv) {
for (i = 0; i < niv; ++i) {
switch (iv[i].settings_id) {
case NGHTTP2_SETTINGS_HEADER_TABLE_SIZE:
if (iv[i].value > NGHTTP2_MAX_HEADER_TABLE_SIZE) {
return 0;
}
break;
case NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:
break;

View File

@ -65,9 +65,6 @@
/* The number of bytes for each SETTINGS entry */
#define NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH 6
/* The maximum header table size in SETTINGS_HEADER_TABLE_SIZE */
#define NGHTTP2_MAX_HEADER_TABLE_SIZE ((1u << 31) - 1)
/* Length of priority related fields in HEADERS/PRIORITY frames */
#define NGHTTP2_PRIORITY_SPECLEN 5

View File

@ -4027,12 +4027,6 @@ int nghttp2_session_on_settings_received(nghttp2_session *session,
switch (entry->settings_id) {
case NGHTTP2_SETTINGS_HEADER_TABLE_SIZE:
if (entry->value > NGHTTP2_MAX_HEADER_TABLE_SIZE) {
return session_handle_invalid_connection(
session, frame, NGHTTP2_ERR_HEADER_COMP,
"SETTINGS: too large SETTINGS_HEADER_TABLE_SIZE");
}
rv = nghttp2_hd_deflate_change_table_size(&session->hd_deflater,
entry->value);
if (rv != 0) {

View File

@ -537,10 +537,11 @@ void test_nghttp2_iv_check(void) {
iv[1].value = 0;
CU_ASSERT(nghttp2_iv_check(iv, 2));
/* Too large SETTINGS_HEADER_TABLE_SIZE */
/* Full size SETTINGS_HEADER_TABLE_SIZE (UINT32_MAX) must be
accepted */
iv[1].settings_id = NGHTTP2_SETTINGS_HEADER_TABLE_SIZE;
iv[1].value = UINT32_MAX;
CU_ASSERT(!nghttp2_iv_check(iv, 2));
CU_ASSERT(nghttp2_iv_check(iv, 2));
/* Too small SETTINGS_MAX_FRAME_SIZE */
iv[0].settings_id = NGHTTP2_SETTINGS_MAX_FRAME_SIZE;