BUILD: debug: Avoid warnings in dev mode with -02 because of some BUG_ON tests
Some BUG_ON() tests emit a warning because of a potential null pointer
dereference on an HTX block. In fact, it should never happen, but now, GCC is
happy.
This patch must be backported to 2.0.
diff --git a/src/hlua.c b/src/hlua.c
index cefaf38..37f7866 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -3911,7 +3911,7 @@
htx = htxbuf(&s->req.buf);
blk = htx_get_first_blk(htx);
- BUG_ON(htx_get_blk_type(blk) != HTX_BLK_REQ_SL);
+ BUG_ON(!blk || htx_get_blk_type(blk) != HTX_BLK_REQ_SL);
sl = htx_get_blk_ptr(htx, blk);
/* Stores the request method. */
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 49e0a2f..2454345 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -4629,7 +4629,7 @@
/* get the start line, we do have one */
blk = htx_get_head_blk(htx);
- BUG_ON(htx_get_blk_type(blk) != HTX_BLK_RES_SL);
+ BUG_ON(!blk || htx_get_blk_type(blk) != HTX_BLK_RES_SL);
ALREADY_CHECKED(blk);
sl = htx_get_blk_ptr(htx, blk);
h2s->status = sl->info.res.status;
@@ -4864,7 +4864,7 @@
/* get the start line, we do have one */
blk = htx_get_head_blk(htx);
- BUG_ON(htx_get_blk_type(blk) != HTX_BLK_REQ_SL);
+ BUG_ON(!blk || htx_get_blk_type(blk) != HTX_BLK_REQ_SL);
ALREADY_CHECKED(blk);
sl = htx_get_blk_ptr(htx, blk);
meth = htx_sl_req_meth(sl);
diff --git a/src/stats.c b/src/stats.c
index 02057c5..5954fe6 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -284,7 +284,7 @@
struct ist uri;
blk = htx_get_head_blk(htx);
- BUG_ON(htx_get_blk_type(blk) != HTX_BLK_REQ_SL);
+ BUG_ON(!blk || htx_get_blk_type(blk) != HTX_BLK_REQ_SL);
ALREADY_CHECKED(blk);
uri = htx_sl_req_uri(htx_get_blk_ptr(htx, blk));
return uri.ptr + appctx->ctx.stats.scope_str;