From 7059ebc095a563536095028dd9889e5aaba6c2c6 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Wed, 8 Dec 2021 15:51:04 +0100 Subject: [PATCH] MINOR: h3: fix possible invalid dereference on htx parsing MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The htx variable is only initialized if we have received a HTTP/3 HEADERS frame. Else it must not be dereferenced. This should fix the compilation on CI with gcc. src/h3.c: In function ‘h3_decode_qcs’: src/h3.c:224:14: error: ‘htx’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 224 | htx->flags |= HTX_FL_EOM --- src/h3.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/h3.c b/src/h3.c index 970b95752..79d746001 100644 --- a/src/h3.c +++ b/src/h3.c @@ -100,7 +100,7 @@ static int h3_decode_qcs(struct qcs *qcs, int fin, void *ctx) { struct buffer *rxbuf = &qcs->rx.buf; struct h3 *h3 = ctx; - struct htx *htx; + struct htx *htx = NULL; struct htx_sl *sl; struct conn_stream *cs; struct http_hdr list[global.tune.max_http_hdr]; @@ -220,8 +220,10 @@ static int h3_decode_qcs(struct qcs *qcs, int fin, void *ctx) b_del(rxbuf, flen); } - if (fin && !b_data(rxbuf)) - htx->flags |= HTX_FL_EOM; + if (htx) { + if (fin && !b_data(rxbuf)) + htx->flags |= HTX_FL_EOM; + } return 0; -- 2.47.3