aboutsummaryrefslogtreecommitdiff
path: root/src/http/v3/ngx_http_v3_parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/http/v3/ngx_http_v3_parse.c')
-rw-r--r--src/http/v3/ngx_http_v3_parse.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/http/v3/ngx_http_v3_parse.c b/src/http/v3/ngx_http_v3_parse.c
index 3be3802ed..71a643d70 100644
--- a/src/http/v3/ngx_http_v3_parse.c
+++ b/src/http/v3/ngx_http_v3_parse.c
@@ -399,7 +399,8 @@ ngx_int_t
ngx_http_v3_parse_literal(ngx_connection_t *c, ngx_http_v3_parse_literal_t *st,
u_char ch)
{
- ngx_uint_t n;
+ ngx_uint_t n;
+ ngx_http_v3_srv_conf_t *v3cf;
enum {
sw_start = 0,
sw_value
@@ -415,6 +416,14 @@ ngx_http_v3_parse_literal(ngx_connection_t *c, ngx_http_v3_parse_literal_t *st,
n = st->length;
+ v3cf = ngx_http_v3_get_module_srv_conf(c, ngx_http_v3_module);
+
+ if (n > v3cf->max_field_size) {
+ ngx_log_error(NGX_LOG_ERR, c->log, 0,
+ "client exceeded http3_max_field_size limit");
+ return NGX_ERROR;
+ }
+
if (st->huffman) {
n = n * 8 / 5;
st->huffstate = 0;