Mercurial > hg > nginx
comparison src/http/v3/ngx_http_v3_parse.c @ 8552:351d62300832 quic
HTTP/3: rearranged length check when parsing header.
The new code looks simpler and is similar to other checks.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Wed, 16 Sep 2020 20:21:03 +0100 |
parents | 234e9d89ff7f |
children | 279ad36f2f4b |
comparison
equal
deleted
inserted
replaced
8551:5a794d2452ef | 8552:351d62300832 |
---|---|
210 if (st->type != NGX_HTTP_V3_FRAME_HEADERS) { | 210 if (st->type != NGX_HTTP_V3_FRAME_HEADERS) { |
211 st->state = st->length > 0 ? sw_skip : sw_type; | 211 st->state = st->length > 0 ? sw_skip : sw_type; |
212 break; | 212 break; |
213 } | 213 } |
214 | 214 |
215 if (st->length == 0) { | |
216 return NGX_HTTP_V3_ERR_FRAME_ERROR; | |
217 } | |
218 | |
215 st->state = sw_prefix; | 219 st->state = sw_prefix; |
216 break; | 220 break; |
217 | 221 |
218 case sw_skip: | 222 case sw_skip: |
219 | 223 |
223 | 227 |
224 break; | 228 break; |
225 | 229 |
226 case sw_prefix: | 230 case sw_prefix: |
227 | 231 |
228 if (st->length-- == 0) { | 232 if (--st->length == 0) { |
229 return NGX_HTTP_V3_ERR_FRAME_ERROR; | 233 return NGX_HTTP_V3_ERR_FRAME_ERROR; |
230 } | 234 } |
231 | 235 |
232 rc = ngx_http_v3_parse_header_block_prefix(c, &st->prefix, ch); | 236 rc = ngx_http_v3_parse_header_block_prefix(c, &st->prefix, ch); |
233 if (rc != NGX_DONE) { | 237 if (rc != NGX_DONE) { |
234 return rc; | 238 return rc; |
235 } | |
236 | |
237 if (st->length == 0) { | |
238 return NGX_HTTP_V3_ERR_FRAME_ERROR; | |
239 } | 239 } |
240 | 240 |
241 st->state = sw_verify; | 241 st->state = sw_verify; |
242 break; | 242 break; |
243 | 243 |