BUG/MINOR: h1-htx: properly initialize the err_pos field
Trailers are parsed using a temporary h1m struct, likely due to using distinct h1 parser states. However, the err_pos field that's used to decide whether or not to enfore option accept-invalid-http-request (or response) was not initialized in this struct, resulting in using a random value that may randomly accept or reject a few bad chars. The impact is very limited in trailers (e.g. no message size is transmitted there) but we must make sure that the option is respected, at least for users facing the need for this option there. The issue was introduced in 2.0 by commit2d7c5395ed
("MEDIUM: htx: Add the parsing of trailers of chunked messages"), and the code moved from mux_h1.c to h1_htx.c in 2.1 with commit4f0f88a9d0
("MEDIUM: mux-h1/h1-htx: move HTX convertion of H1 messages in dedicated file") so the patch needs to be backported to all stable versions, and the file adjusted for 2.0.
This commit is contained in:
parent
0ce34f8caa
commit
44f02d26f0
|
@ -900,6 +900,7 @@ int h1_parse_msg_tlrs(struct h1m *h1m, struct htx *dsthtx,
|
|||
b_slow_realign_ofs(srcbuf, trash.area, 0);
|
||||
|
||||
tlr_h1m.flags = (H1_MF_NO_PHDR|H1_MF_HDRS_ONLY);
|
||||
tlr_h1m.err_pos = h1m->err_pos;
|
||||
ret = h1_headers_to_hdr_list(b_peek(srcbuf, ofs), b_tail(srcbuf),
|
||||
hdrs, sizeof(hdrs)/sizeof(hdrs[0]), &tlr_h1m, NULL);
|
||||
if (ret <= 0) {
|
||||
|
|
Loading…
Reference in New Issue