]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: payload: make req.payload and payload_lv aware of dynamic buffers
authorWilly Tarreau <w@1wt.eu>
Thu, 24 Sep 2015 14:33:10 +0000 (16:33 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 24 Sep 2015 14:38:48 +0000 (16:38 +0200)
Due to a check between offset+len and buf->size, an empty buffer returns
"will never match". Check against tune.bufsize instead.
(cherry picked from commit 43e4039fd5d208fd9d32157d20de93d3ddf9bc0d)

src/payload.c

index 378927a7d8a659aabc01089aa344a3556600c79d..71d3ec00f74e3c6f8f9e2f096d1f35da5e62bb88 100644 (file)
@@ -670,7 +670,7 @@ smp_fetch_payload_lv(const struct arg *arg_p, struct sample *smp, const char *kw
                        buf_offset = arg_p[2].data.sint >> 1;
        }
 
-       if (!buf_size || buf_size > chn->buf->size || buf_offset + buf_size > chn->buf->size) {
+       if (!buf_size || buf_size > global.tune.bufsize || buf_offset + buf_size > global.tune.bufsize) {
                /* will never match */
                smp->flags = 0;
                return 0;
@@ -702,7 +702,7 @@ smp_fetch_payload(const struct arg *arg_p, struct sample *smp, const char *kw, v
        if (!chn->buf)
                return 0;
 
-       if (buf_size > chn->buf->size || buf_offset + buf_size > chn->buf->size) {
+       if (!buf_size || buf_size > global.tune.bufsize || buf_offset + buf_size > global.tune.bufsize) {
                /* will never match */
                smp->flags = 0;
                return 0;