haproxy public development tree
Go to file
Amaury Denoyelle 3a72ba2aed BUILD: quic: fix dubious 0-byte overflow on qc_release_lost_pkts
With GCC 12.2.0 and O2 optimization activated, compiler reports the
following warning for qc_release_lost_pkts().

In function ‘quic_tx_packet_refdec’,
    inlined from ‘qc_release_lost_pkts.constprop’ at src/quic_conn.c:2056:3:
include/haproxy/atomic.h:320:41: error: ‘__atomic_sub_fetch_4’ writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=]
  320 | #define HA_ATOMIC_SUB_FETCH(val, i)     __atomic_sub_fetch(val, i, __ATOMIC_SEQ_CST)
      |                                         ^~~~~~~~~~~~~~~~~~
include/haproxy/quic_conn.h:499:14: note: in expansion of macro ‘HA_ATOMIC_SUB_FETCH’
  499 |         if (!HA_ATOMIC_SUB_FETCH(&pkt->refcnt, 1)) {
      |              ^~~~~~~~~~~~~~~~~~~

GCC thinks that quic_tx_packet_refdec() can be called with a NULL
argument from qc_release_lost_pkts() with <oldest_lost> as arg.

This warning is a false positive as <oldest_lost> cannot be NULL in
qc_release_lost_pkts() at this stage. This is due to the previous check
to ensure that <pkts> list is not empty.

This warning is silenced by using ALREADY_CHECKED() macro.

This should be backported up to 2.6.

This should fix github issue #1852.
2022-11-17 10:34:47 +01:00
.github CI: emit the compiler's version in the build reports 2022-11-14 11:14:02 +01:00
addons BUILD: prometheus: use __fallthrough in promex_dump_metrics() and IO handler() 2022-11-14 11:14:02 +01:00
admin CLEANUP: assorted typo fixes in the code and comments 2022-10-30 17:17:56 +01:00
dev MINOR: flags/mux-fcgi: Decode FCGI connection and stream flags 2022-10-12 17:10:41 +02:00
doc MEDIUM: trace: create a new "trace" statement in the "global" section 2022-11-16 17:55:53 +01:00
examples
include MINOR: dynbuf: switch allocation and release to macros to better track users 2022-11-16 11:44:26 +01:00
reg-tests REG-TESTS: cache: Remove T-E header for 304-Not-Modified responses 2022-11-16 17:19:43 +01:00
scripts CLEANUP: assorted typo fixes in the code and comments 2022-10-30 17:17:56 +01:00
src BUILD: quic: fix dubious 0-byte overflow on qc_release_lost_pkts 2022-11-17 10:34:47 +01:00
tests TESTS: add a unit test for one_among_mask() 2022-06-21 20:29:57 +02:00
.cirrus.yml CI: cirrus-ci: bump FreeBSD image to 13-1 2022-09-09 13:30:17 +02:00
.gitattributes
.gitignore CLEANUP: exclude udp-perturb with .gitignore 2022-09-16 15:47:04 +02:00
.mailmap
.travis.yml
BRANCHES
CHANGELOG [RELEASE] Released version 2.7-dev8 2022-10-14 20:45:23 +02:00
CONTRIBUTING
INSTALL BUILD: Makefile: Add Lua 5.4 autodetect 2022-07-04 17:28:48 +02:00
LICENSE
MAINTAINERS
Makefile BUILD: Makefile: add "USE_SHM_OPEN" on the linux-musl target 2022-10-21 10:35:37 +02:00
README
SUBVERS
VERDATE [RELEASE] Released version 2.7-dev8 2022-10-14 20:45:23 +02:00
VERSION [RELEASE] Released version 2.7-dev8 2022-10-14 20:45:23 +02:00

The HAProxy documentation has been split into a number of different files for
ease of use.

Please refer to the following files depending on what you're looking for :

  - INSTALL for instructions on how to build and install HAProxy
  - BRANCHES to understand the project's life cycle and what version to use
  - LICENSE for the project's license
  - CONTRIBUTING for the process to follow to submit contributions

The more detailed documentation is located into the doc/ directory :

  - doc/intro.txt for a quick introduction on HAProxy
  - doc/configuration.txt for the configuration's reference manual
  - doc/lua.txt for the Lua's reference manual
  - doc/SPOE.txt for how to use the SPOE engine
  - doc/network-namespaces.txt for how to use network namespaces under Linux
  - doc/management.txt for the management guide
  - doc/regression-testing.txt for how to use the regression testing suite
  - doc/peers.txt for the peers protocol reference
  - doc/coding-style.txt for how to adopt HAProxy's coding style
  - doc/internals for developer-specific documentation (not all up to date)