]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: compression: make gcc 10 happy with free_zlib()
authorWilly Tarreau <w@1wt.eu>
Sun, 14 Jun 2020 05:50:18 +0000 (07:50 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 14 Jun 2020 06:00:19 +0000 (08:00 +0200)
In issue #685 gcc 10 seems to find a null pointer deref in free_zlib().
There is no such case because all possible pools are tested and there's
no other one in zlib, except if there's a bug or memory corruption
somewhere else. The code used to be written like this to make sure that
any such bug couldn't remain unnoticed.

Now gcc 10 sees this theorical code path and complains, so let's just
change the code to place an explicit crash in case of no match (which
must never happen).

This might be backported if other versions are affected.

src/compression.c

index ffe5b0b04a8c7a91804d4ca6512d10979aa013d0..e3f34b565410bc6b1120252522566558f1426066 100644 (file)
@@ -490,6 +490,11 @@ static void free_zlib(void *opaque, void *ptr)
                pool = zlib_pool_head;
        else if (ptr == ctx->zlib_pending_buf)
                pool = zlib_pool_pending_buf;
+       else {
+               // never matched, just to silence gcc
+               ABORT_NOW();
+               return;
+       }
 
        pool_free(pool, ptr);
        _HA_ATOMIC_SUB(&zlib_used_memory, pool->size);