HTTP/3: reject empty DATA and HEADERS frames on control stream.

Previously only non-empty frames were rejected.
This commit is contained in:
Roman Arutyunyan 2021-05-05 13:28:05 +03:00
parent f36ebdc3cd
commit acc3ad0060

View File

@ -1026,7 +1026,10 @@ ngx_http_v3_parse_control(ngx_connection_t *c, void *data, u_char ch)
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
"http3 parse frame type:%ui", st->type); "http3 parse frame type:%ui", st->type);
if (ngx_http_v3_is_v2_frame(st->type)) { if (ngx_http_v3_is_v2_frame(st->type)
|| st->type == NGX_HTTP_V3_FRAME_DATA
|| st->type == NGX_HTTP_V3_FRAME_HEADERS)
{
return NGX_HTTP_V3_ERR_FRAME_UNEXPECTED; return NGX_HTTP_V3_ERR_FRAME_UNEXPECTED;
} }
@ -1069,10 +1072,6 @@ ngx_http_v3_parse_control(ngx_connection_t *c, void *data, u_char ch)
st->state = sw_max_push_id; st->state = sw_max_push_id;
break; break;
case NGX_HTTP_V3_FRAME_DATA:
case NGX_HTTP_V3_FRAME_HEADERS:
return NGX_HTTP_V3_ERR_FRAME_UNEXPECTED;
default: default:
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0,
"http3 parse skip unknown frame"); "http3 parse skip unknown frame");