]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: spoe: check buffer size before acquiring or releasing it
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 10 Nov 2017 10:54:58 +0000 (11:54 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 13 Nov 2017 10:38:12 +0000 (11:38 +0100)
In spoe_acquire_buffer and spoe_release_buffer, instead of checking the buffer
against buf_empty, we now check its size. It is important because when an
allocation fails, it will be set to buf_wanted. In both cases, the size is 0.

It is a proactive bug fix, no real problem was observed till now. It cannot be
backported as is in 1.7 because of all changes made on the SPOE in 1.8.

src/flt_spoe.c

index 5a8c9e61379f186d3505f9d327e124f832016363..ea4675cb76ab6f2496812073bf4b923b65d71fb3 100644 (file)
@@ -2695,7 +2695,7 @@ spoe_process_event(struct stream *s, struct spoe_context *ctx,
 static int
 spoe_acquire_buffer(struct buffer **buf, struct buffer_wait *buffer_wait)
 {
-       if (*buf != &buf_empty)
+       if ((*buf)->size)
                return 1;
 
        if (!LIST_ISEMPTY(&buffer_wait->list)) {
@@ -2725,7 +2725,7 @@ spoe_release_buffer(struct buffer **buf, struct buffer_wait *buffer_wait)
        }
 
        /* Release the buffer if needed */
-       if (*buf != &buf_empty) {
+       if ((*buf)->size) {
                b_free(buf);
                offer_buffers(buffer_wait->target,
                              tasks_run_queue + applets_active_queue);