]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: quic: Add a DISGUISE() to please some compiler to qc_prep_hpkts() 1st parameter
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 30 Jun 2023 16:37:18 +0000 (18:37 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 30 Jun 2023 16:48:52 +0000 (18:48 +0200)
Some compiler could complain with such a warning:
  src/quic_conn.c:3700:44: warning: potential null pointer dereference [-Wnull-dereference]
   3700 |                                 frms = &qel->pktns->tx.frms;

It could not figure out that <qel> could not be NULL at this location.
This is fixed calling qc_prep_hpkts() with a disguise 1st parameter.

src/quic_conn.c

index a20feeaa0bbd94c82b13546cbee6543a88f6828c..c205c351ee6652ccb1ecc43caf921a0a246a010f 100644 (file)
@@ -3696,6 +3696,9 @@ static int qc_prep_pkts(struct quic_conn *qc, struct buffer *buf,
                                next_tel = QUIC_TLS_ENC_LEVEL_APP;
                        tel = next_tel;
                        qel = qc_quic_enc_level(qc, tel);
+                       /* Note that we cannot NULL as value for <qel> when for the Application
+                        * data encryption level. Furthermore this encryption is never released.
+                        */
                        if (tel == QUIC_TLS_ENC_LEVEL_APP)
                                frms = &qel->pktns->tx.frms;
                        else
@@ -5164,7 +5167,7 @@ struct task *quic_conn_io_cb(struct task *t, void *context, unsigned int state)
        b_reset(buf);
 
        ret = qc_prep_hpkts(qc, buf,
-                           qc_quic_enc_level(qc, tel),
+                           DISGUISE(qc_quic_enc_level(qc, tel)),
                            qc_quic_enc_level(qc, next_tel));
        if (ret == -1) {
                qc_txb_release(qc);