Hi,

HAProxy 3.0.22 was released on 2026/05/06. It added 26 new commits
after version 3.0.21.

We still got a significant number of reports for 3.4 last week, a number
of which affect stable releases. We'd really like to clean up the stable
state before releasing 3.4 so that we know everything is in a sane state.
So here's another 3.0 revision, with the following issues fixed:

- h2: the fix for the possible partial request smuggling based on headers/
  trailers was insufficiently fixed for trailers due to the indication of
  presence of the content-length header not being up-to-date while
  checking them. The patch had to be reworked to pass the state to the
  trailers parser. The impact remains moderate though, with reuse-never
  being the most exposed and other modes only being exploitable on totally
  idle systems, and with a server that responds before the end. This was
  reported by Pratham Gupta.

- h2: the :protocol header is only permitted with extended CONNECT and
  when that extension was negotiated. Previously it would be silently
  accepted with other methods or outside of the negotiation. There should
  not be any impact beyond making a component developer believe their
  code works while it shouldn't. This issue was reported by Huangbin
  Zhan.

- http: the presence of commas in an authority is technically permitted by
  RFC3986 but is not really supported since everyone uses req.hdr(host)
  and not req.fhdr(host). Since this is not used for regular hosts as used
  with HTTP and can make the host validate differently to what is passed,
  we preferred to simply reject them instead of working dirty tricks around
  them. Note that the worst we could do was to cause the header to multiply
  during normalization and cause a crash. This was reported by OSS Fuzz.

- CLI: if an old worker does not respond, connections attempts to it
  through the master wouldn't timeout, so when the client would leave,
  that connection would be lost, and after a few attempts it would no
  longer be possible to connect to the master socket. A "server-fin"
  timeout was installed so that the timeout starts when a client leaves
  but not before. Issue reported and fixed by Alexander Stephan, Martin
  Strenge and William.

- h1: HTX data block reservation wasn't flushed on error, possibly causing
  incorrect readings in health checks and in haterm.

Other, lower importance / impact:

- vars: some parse error in variables of scope proc were possibly ignored,
  which could be missed or even possibly cause a crash at boot time.

- tcpcheck: some HTTP health checks wouldn't always report the failure
  cause upon a wrong match or when failing on "expect hdr".

- http_auth_bearer() sample fetch function would return an empty string
  instead of not found.

- various leaks on error paths (map descriptor on load error, reference
  pattern on file load error).

- various reg-test updates

I'd say that if you use H2 you should update (or disable it if you don't
use it). Pratham requested a CVE for the first one.

Please find the usual URLs below :
   Site index       : https://www.haproxy.org/
   Documentation    : https://docs.haproxy.org/
   Wiki             : https://github.com/haproxy/wiki/wiki
   Discourse        : https://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Q&A from devs    : https://github.com/orgs/haproxy/discussions
   Sources          : https://www.haproxy.org/download/3.0/src/
   Git repository   : https://git.haproxy.org/git/haproxy-3.0.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy-3.0.git
   Changelog        : https://www.haproxy.org/download/3.0/src/CHANGELOG
   Dataplane API    : 
https://github.com/haproxytech/dataplaneapi/releases/latest
   Pending bugs     : https://www.haproxy.org/l/pending-bugs
   Reviewed bugs    : https://www.haproxy.org/l/reviewed-bugs
   Code reports     : https://www.haproxy.org/l/code-reports
   Latest builds    : https://www.haproxy.org/l/dev-packages

Willy
---
Complete changelog :
Alexander Stephan (1):
      BUG/MEDIUM: cli: fix master CLI connection slot leak on client disconnect

Christopher Faulet (7):
      BUG/MINOR: tcpcheck: Properly report error for http health-checks
      BUG/MINOR: resolvers: Free new requester on error when linking a 
resolution
      BUG/MINOR: resolvers: Free opts on parse error in 
resolv_parse_do_resolve()
      BUG/MINOR: http-fetch: Fix http_auth_bearer() when custom header is used
      BUG/MEDIUM: h1_htx: Remove reverved block on error during contig chunks 
parsing
      BUG/MAJOR: http: forbid comma character in authority value
      BUG/MEDIUM: h1: Enforce the authority validation during H1 request parsing

Mia Kanashi (1):
      BUG/MINOR: tools: read_line_to_trash() handle empty files without \n

William Lallemand (1):
      BUG/MINOR: mworker/cli: check ci_insert() return value in 
pcli_parse_request()

Willy Tarreau (16):
      BUG/MINOR: vars: make parse_store() return error on var_set() failure
      BUG/MINOR: vars: don't store the variable twice with set-var-fmt
      BUG/MINOR: vars: only print first invalid char in fill_desc()
      BUG/MINOR: hpack: validate idx > 0 in hpack_valid_idx()
      BUG/MINOR: acl: fix a possible arg corruption in smp_fetch_acl_parse()
      BUG/MINOR: map: do not leak a map descriptor on load error
      CLEANUP: map/cli: fix some map-related help messages
      BUG/MINOR: pattern: release the reference on failure to load from file
      BUG/MEDIUM: mux-h2: fix the body_len to check when parsing request 
trailers
      BUG/MAJOR: mux-h2: preset MSGF_BODY_CL on H2_SF_DATA_CLEN in 
h2c_dec_hdrs()
      REGTESTS: add a regtest to validate various NTLM transitions
      REGTESTS: http-messaging: always send RFC8441 client settings to use ext 
connect
      BUG/MINOR: h2: add decoding for :protocol in traces
      BUG/MINOR: mux-h2: condition the processing of 8441 extension to global 
setting
      MINOR: mux-h2: add a new message flag to indicate ext connect support
      BUG/MINOR: h2: only accept :protocol with extended CONNECT

---


Reply via email to