6d79bf8e6f9004f235bda355ed620f40819616db
[openwrt-packages.git] /
1 commit 032cff38c24d8359dc575423a94d19b6ad8bf848
2 Author: Christopher Faulet <cfaulet@haproxy.com>
3 Date:   Mon Jun 17 11:44:47 2019 +0200
4
5     BUG/MEDIUM: h2/htx: Update data length of the HTX when the cookie list is built
6     
7     When an H2 request is converted into an HTX message, All cookie headers are
8     grouped into one, each value separated by a semicolon (;). To do so, we add the
9     header "cookie" with the first value and then we update the value by appending
10     other cookies. But during this operation, only the size of the HTX block is
11     updated. And not the data length of the whole HTX message.
12     
13     It is an old bug and it seems to work by chance till now. But it may lead to
14     undefined behaviour by time to time.
15     
16     This patch must be backported to 2.0 and 1.9
17     
18     (cherry picked from commit 0c6de00d7c842a682bba7586ef34fb10f69ec63c)
19     Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
20
21 diff --git a/src/h2.c b/src/h2.c
22 index 9681aca5..32c1ef16 100644
23 --- a/src/h2.c
24 +++ b/src/h2.c
25 @@ -737,6 +737,7 @@ int h2_make_htx_request(struct http_hdr *list, struct htx *htx, unsigned int *ms
26                                 goto fail;
27  
28                         htx_set_blk_value_len(blk, tl);
29 +                       htx->data += vl+2;
30                         *(char *)(htx_get_blk_ptr(htx, blk) + bs + 0) = ';';
31                         *(char *)(htx_get_blk_ptr(htx, blk) + bs + 1) = ' ';
32                         memcpy(htx_get_blk_ptr(htx, blk) + bs + 2, list[ck].v.ptr, vl);
git clone https://git.99rst.org/PROJECT