]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: htx: Fix block size calculation when a start-line is added/replaced
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 26 Nov 2018 14:02:30 +0000 (15:02 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 1 Dec 2018 16:20:36 +0000 (17:20 +0100)
What we store in the buffer is a union htx_sl, not an h1_sl, so the
computed size was not correct.

src/htx.c

index 23ac611332944051207c649627ae646321ff9bde..f042143185fa666348376679c931cbd5d340def2 100644 (file)
--- a/src/htx.c
+++ b/src/htx.c
@@ -617,7 +617,7 @@ struct htx_blk *htx_replace_reqline(struct htx *htx, struct htx_blk *blk,
         if (type != HTX_BLK_REQ_SL)
                 return NULL;
 
-       size = sizeof(sl) + sl.rq.m.len + sl.rq.u.len + sl.rq.v.len;
+       size = sizeof(union htx_sl) + sl.rq.m.len + sl.rq.u.len + sl.rq.v.len;
        blk = htx_new_blk_value(htx, blk, size);
        if (!blk)
                return NULL;
@@ -640,7 +640,7 @@ struct htx_blk *htx_replace_resline(struct htx *htx, struct htx_blk *blk,
         if (type != HTX_BLK_RES_SL)
                 return NULL;
 
-       size = sizeof(sl) + sl.rq.m.len + sl.rq.u.len + sl.rq.v.len;
+       size = sizeof(union htx_sl) + sl.rq.m.len + sl.rq.u.len + sl.rq.v.len;
        blk = htx_new_blk_value(htx, blk, size);
        if (!blk)
                return NULL;
@@ -659,7 +659,7 @@ struct htx_blk *htx_add_reqline(struct htx *htx, const union h1_sl sl)
         struct htx_blk *blk;
        uint32_t size;
 
-       size = sizeof(sl) + sl.rq.m.len + sl.rq.u.len + sl.rq.v.len;
+       size = sizeof(union htx_sl) + sl.rq.m.len + sl.rq.u.len + sl.rq.v.len;
 
         /* FIXME: check size (< 256MB) */
         blk = htx_add_blk(htx, HTX_BLK_REQ_SL, size);
@@ -679,7 +679,7 @@ struct htx_blk *htx_add_resline(struct htx *htx, const union h1_sl sl)
         struct htx_blk *blk;
        uint32_t size;
 
-       size = sizeof(sl) + sl.st.v.len + sl.st.c.len + sl.st.r.len;
+       size = sizeof(union htx_sl) + sl.st.v.len + sl.st.c.len + sl.st.r.len;
 
         /* FIXME: check size (< 256MB) */
         blk = htx_add_blk(htx, HTX_BLK_RES_SL, size);