]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: quic: Move an ASSUME_NONNULL() for variable which is not null
authorFrederic Lecaille <flecaille@haproxy.com>
Tue, 21 Jan 2025 15:26:42 +0000 (16:26 +0100)
committerFrederic Lecaille <flecaille@haproxy.com>
Tue, 21 Jan 2025 21:01:34 +0000 (22:01 +0100)
Some new compilers warn that <oldest_lost> variable can be null even this cannot be
the case as mentioned by the comment about an already present ASSUME_NONNULL()
call comment as follows:

src/quic_loss.c: In function ‘qc_release_lost_pkts’:
src/quic_loss.c:307:86: error: potential null pointer dereference [-Werror=null-dereference]
  307 |   unsigned int period = newest_lost->time_sent_ms - oldest_lost->time_sent_ms;
      |                                                     ~~~~~~~~~~~^~~~~~~~~~~~~~

Move up this ASSUME_NONNULL() statement to please these compiler.

Must be backported as far as 2.6 to easy any further backport around this code part.

src/quic_loss.c

index 1c32d92c4a85e68bc3ac88268cd85ae3e4228330..79b5d35b75e62e9f98ff7f7c407b1f5c6666b169 100644 (file)
@@ -283,6 +283,12 @@ int qc_release_lost_pkts(struct quic_conn *qc, struct quic_pktns *pktns,
                tot_lost++;
        }
 
+       /* <oldest_lost> cannot be NULL at this stage because we have ensured
+        * that <pkts> list is not empty. Without this, GCC 12.2.0 reports a
+        * possible overflow on a 0 byte region with O2 optimization.
+        */
+       ASSUME_NONNULL(oldest_lost);
+
        if (!close) {
                if (newest_lost) {
                        struct quic_cc *cc = &qc->path->cc;
@@ -313,11 +319,6 @@ int qc_release_lost_pkts(struct quic_conn *qc, struct quic_pktns *pktns,
                }
        }
 
-       /* <oldest_lost> cannot be NULL at this stage because we have ensured
-        * that <pkts> list is not empty. Without this, GCC 12.2.0 reports a
-        * possible overflow on a 0 byte region with O2 optimization.
-        */
-       ASSUME_NONNULL(oldest_lost);
        quic_tx_packet_refdec(oldest_lost);
        if (newest_lost != oldest_lost)
                quic_tx_packet_refdec(newest_lost);