From: Christopher Faulet Date: Mon, 18 Nov 2019 14:50:25 +0000 (+0100) Subject: BUILD: debug: Avoid warnings in dev mode with -02 because of some BUG_ON tests X-Git-Tag: v2.1.0~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ea009736d8f25be6c79aff0bed3a994eef87f3fd;p=thirdparty%2Fhaproxy.git 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 cefaf38014..37f7866874 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -3911,7 +3911,7 @@ static int hlua_applet_http_new(lua_State *L, struct appctx *ctx) 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 49e0a2fac3..24543458b7 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -4629,7 +4629,7 @@ static size_t h2s_frt_make_resp_headers(struct h2s *h2s, struct htx *htx) /* 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 @@ static size_t h2s_bck_make_req_headers(struct h2s *h2s, struct htx *htx) /* 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 02057c5928..5954fe67f8 100644 --- a/src/stats.c +++ b/src/stats.c @@ -284,7 +284,7 @@ static const char *stats_scope_ptr(struct appctx *appctx, struct stream_interfac 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;