haproxy/src
Frederic Lecaille eb1a097a66 BUG/MINOR: quic: Too short datagram during packet building failures (aws-lc only)
This issue was reported by Ilya (@Chipitsine) when building haproxy against
aws-lc in GH #2663 where handshakeloss and handshakecorruption interop tests could
lead haproxy to crash after having built too short datagrams:

FATAL: bug condition "first_pkt->type == QUIC_PACKET_TYPE_INITIAL && (first_pkt->flags & (1UL << 0)) && length < 1200" matched at src/quic_tx.c:163
call trace(13):
| 0x55f4ee4dcc02 [ba d9 00 00 00 48 8d 35]: main-0x195bf2
| 0x55f4ee4e3112 [83 3d 2f 16 35 00 00 0f]: qc_send+0x11f3/0x1b5d
| 0x55f4ee4e9ab4 [85 c0 0f 85 00 f6 ff ff]: quic_conn_io_cb+0xab1/0xf1c
| 0x55f4ee6efa82 [48 c7 c0 f8 55 ff ff 64]: run_tasks_from_lists+0x173/0x9c2
| 0x55f4ee6f05d3 [8b 7d a0 29 c7 85 ff 0f]: process_runnable_tasks+0x302/0x6e6
| 0x55f4ee671bb7 [83 3d 86 72 44 00 01 0f]: run_poll_loop+0x6e/0x57b
| 0x55f4ee672367 [48 8b 1d 22 d4 1d 00 48]: main-0x48d
| 0x55f4ee6755e0 [b8 00 00 00 00 e8 08 61]: main+0x2dec/0x335d

This could happen after Handshake packet building failures which follow a successful
Initial packet into the same datagram. In this case, the datagram could be emitted
with a too short length (<1200 bytes).

To fix this, store the datagram only if the first packet is not an Initial packet
or if its length is big enough (>=1200 bytes).

Must be backported as far as 2.6.
2024-08-05 13:40:51 +02:00
..
acl.c BUG/MINOR: acl: support built-in ACLs with acl() sample 2024-05-06 18:42:54 +02:00
action.c MINOR: support for http-request set-timeout client 2023-09-28 08:49:22 +02:00
activity.c BUG/MINOR: activity: fix Delta_calls and Delta_bytes count 2024-05-28 19:25:08 +02:00
applet.c MINOR: stconn: Use a dedicated function to get the opposite sedesc 2024-07-12 15:27:04 +02:00
arg.c
auth.c
backend.c BUG/MEDIUM: queue: deal with a rare TOCTOU in assign_server_and_queue() 2024-07-29 09:27:01 +02:00
base64.c
cache.c MINOR: applet: set the blocking flag in the buffer allocation function 2024-05-10 17:18:13 +02:00
calltrace.c
cbuf.c
cfgcond.c
cfgdiag.c
cfgparse-global.c MINOR: cfgparse-global: move no<poller_name> in cfg_kw_list 2024-07-18 14:15:59 +02:00
cfgparse-listen.c MEDIUM: quic: implement quic-initial rules 2024-07-25 15:39:39 +02:00
cfgparse-quic.c BUILD: cfgparse-quic: fix build error on Solaris due to missing netinet/in.h 2024-07-28 14:59:23 +02:00
cfgparse-ssl.c MINOR: ssl: relax the 'ssl.default-dh-param' keyword parsing 2024-06-14 11:36:52 +02:00
cfgparse-tcp.c MINOR: capabilities: add cap_sys_admin support 2024-04-30 21:40:17 +02:00
cfgparse-unix.c
cfgparse.c MEDIUM: spoe: Force the reuse 'always' mode for SPOP backends 2024-07-12 15:27:05 +02:00
channel.c MINOR: tree-wide: Only rely on co_data() to check channel emptyness 2023-10-17 18:51:13 +02:00
check.c MEDIUM: proxy/spoe: Add a SPOP mode 2024-07-12 15:27:04 +02:00
chunk.c MEDIUM: init: initialize the trash earlier 2023-09-08 16:25:19 +02:00
cli.c BUG/MINOR: cli: Atomically inc the global request counter between CLI commands 2024-07-18 16:39:38 +02:00
clock.c BUILD: clock: improve check for pthread_getcpuclockid() 2024-05-06 08:25:17 +02:00
compression.c MINOR: dynbuf: pass a criticality argument to b_alloc() 2024-05-10 17:18:13 +02:00
connection.c MEDIUM: proxy/spoe: Add a SPOP mode 2024-07-12 15:27:04 +02:00
cpuset.c CLEANUP: Reapply xalloc_cast.cocci 2024-04-02 07:27:33 +02:00
debug.c MINOR: debug: keep runtime limits in postmortem 2024-07-16 14:04:41 +02:00
dgram.c MINOR: dgram: allow to set rcv/sndbuf for dgram sockets as well 2023-10-18 17:01:19 +02:00
dict.c
dns_ring.c MAJOR: import: update mt_list to support exponential back-off (try #2) 2024-07-09 16:46:38 +02:00
dns.c MEDIUM: ring/applet: turn the wait_entry list to an mt_list instead 2024-03-25 17:34:19 +00:00
dynbuf.c MEDIUM: dynbuf: implement emergency buffers 2024-05-10 17:18:13 +02:00
eb32sctree.c
eb32tree.c
eb64tree.c
ebimtree.c
ebistree.c
ebmbtree.c
ebpttree.c
ebsttree.c
ebtree.c
errors.c DEBUG: errors: add name hint for startup-logs memory area 2024-05-21 17:55:20 +02:00
ev_epoll.c DEBUG: pollers/fd: add thread id suffix to per-thread memory areas name hints 2024-05-24 12:07:18 +02:00
ev_evports.c Revert: MEDIUM: evports: permit to report multiple events at once" 2024-05-17 15:57:18 +02:00
ev_kqueue.c
ev_poll.c DEBUG: pollers/fd: add thread id suffix to per-thread memory areas name hints 2024-05-24 12:07:18 +02:00
ev_select.c DEBUG: pollers/fd: add thread id suffix to per-thread memory areas name hints 2024-05-24 12:07:18 +02:00
event_hdl.c MAJOR: import: update mt_list to support exponential back-off (try #2) 2024-07-09 16:46:38 +02:00
extcheck.c MEDIUM: proxy/spoe: Add a SPOP mode 2024-07-12 15:27:04 +02:00
fcgi-app.c MEDIUM: proxy/spoe: Add a SPOP mode 2024-07-12 15:27:04 +02:00
fcgi.c
fd.c MINOR: fd: don't scan the full fdtab on all threads 2024-07-15 19:19:13 +02:00
filters.c Revert "MINOR: filter: "filter" requires TCP or HTTP mode" 2023-11-18 11:16:21 +01:00
fix.c
flt_bwlim.c BUG/MEDIUM: bwlim: Be sure to never set the analyze expiration date in past 2024-07-11 14:51:23 +02:00
flt_http_comp.c MINOR: dynbuf: pass a criticality argument to b_alloc() 2024-05-10 17:18:13 +02:00
flt_spoe.c MEDIUM: spoe: Set the parent stream for SPOE streams 2024-07-18 17:06:12 +02:00
flt_trace.c
freq_ctr.c BUG/MEDIUM: freq-ctr: Don't report overshoot for long inactivity period 2023-11-08 16:38:06 +01:00
frontend.c MINOR: log: provide sending log context to process_send_log() when available 2024-06-13 15:43:09 +02:00
guid.c MINOR: guid: define guid_is_valid_fmt() 2024-04-26 11:29:25 +02:00
h1_htx.c BUG/MINOR: h1: do not forward h2c upgrade header token 2024-08-01 18:23:32 +02:00
h1.c BUG/MINOR: h1: do not forward h2c upgrade header token 2024-08-01 18:23:32 +02:00
h2.c BUG/MEDIUM: h2: Only report early HTX EOM for tunneled streams 2024-08-02 08:42:28 +02:00
h3_stats.c MINOR: h3/qpack: adjust naming for errors 2024-05-16 10:31:17 +02:00
h3.c BUG/MEDIUM: h3: ensure the ":scheme" pseudo header is totally valid 2024-06-28 14:36:30 +02:00
haproxy.c BUILD: ssl: replace USE_OPENSSL_AWSLC by OPENSSL_IS_AWSLC 2024-07-30 18:53:08 +02:00
hash.c
hlua_fcn.c MAJOR: import: update mt_list to support exponential back-off (try #2) 2024-07-09 16:46:38 +02:00
hlua.c BUG/MEDIUM: hlua/cli: Fix lua CLI commands to work with applet's buffers 2024-07-02 10:05:40 +02:00
hpack-dec.c
hpack-enc.c
hpack-huff.c
hpack-tbl.c
hq_interop.c MINOR: dynbuf: pass a criticality argument to b_alloc() 2024-05-10 17:18:13 +02:00
http_acl.c
http_act.c MAJOR: log: implement proper postparsing for logformat expressions 2024-04-04 19:10:01 +02:00
http_ana.c BUG/MEDIUM: http-ana: Report error on write error waiting for the response 2024-08-02 08:42:28 +02:00
http_client.c MINOR: server: define pool-conn-name keyword 2024-05-24 14:36:31 +02:00
http_conv.c MINOR: sample: date converter takes HTTP date and output an UNIX timestamp 2024-06-20 16:38:48 +02:00
http_ext.c OPTIM: http_ext: avoid useless copy in http_7239_extract_{ipv4,ipv6} 2024-03-25 16:24:15 +01:00
http_fetch.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
http_htx.c BUG/MINOR: http-htx: Support default path during scheme based normalization 2024-05-24 16:17:24 +02:00
http_rules.c MAJOR: log: implement proper postparsing for logformat expressions 2024-04-04 19:10:01 +02:00
http.c MEDIUM: http: add the ability to redefine http-err-codes and http-fail-codes 2024-01-11 15:10:08 +01:00
htx.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
init.c
jwt.c BUG/MEDIUM: jwt: Clear SSL error queue on error when checking the signature 2024-07-26 16:59:00 +02:00
lb_chash.c MEDIUM: lb-chash: Deterministic node hashes based on server address 2024-04-02 07:00:10 +02:00
lb_fas.c
lb_fwlc.c
lb_fwrr.c
lb_map.c
lb_ss.c MINOR: lbprm: implement true "sticky" balance algo 2024-03-29 17:08:37 +01:00
limits.c MINOR: debug: use LIM2A to show limits 2024-07-16 14:04:41 +02:00
linuxcap.c MINOR: capabilities: use _LINUX_CAPABILITY_VERSION_3 2024-06-26 07:38:21 +02:00
listener.c CLEANUP: proto: rename TID affinity callbacks 2024-07-11 15:14:06 +02:00
log.c BUG/MINOR: log: fix broken '+bin' logformat node option 2024-06-14 18:25:21 +02:00
lru.c BUG/MINOR: lru: fix the standalone test case for invalid revision 2024-04-13 08:43:12 +02:00
mailers.c BUG/MINOR: proxy: fix email-alert leak on deinit() (2nd try) 2024-06-17 19:37:29 +02:00
map.c MEDIUM: cli/applet: Stop to test opposite SC in I/O handler of CLI commands 2024-03-28 17:28:20 +01:00
mjson.c
mqtt.c
mux_fcgi.c MINOR: connection: No longer include stconn type header in connection-t.h 2024-07-12 15:27:04 +02:00
mux_h1.c BUG/MEDIUM: mux-pt/mux-h1: Release the pipe on connection error on sending path 2024-07-30 09:05:25 +02:00
mux_h2.c BUG/MEDIUM: mux-h2: Propagate term flags to SE on error in h2s_wake_one_stream 2024-08-02 08:42:28 +02:00
mux_pt.c BUILD: mux-pt: Use the right name for the sedesc variable 2024-07-30 10:44:00 +02:00
mux_quic.c MINOR: connection: No longer include stconn type header in connection-t.h 2024-07-12 15:27:04 +02:00
mux_spop.c MINOR: spoe: export the list of SPOP error reasons 2024-07-24 14:19:10 +02:00
mworker-prog.c
mworker.c REORG: init: encapsulate 'reload' sockpair and master CLI listeners creation 2024-06-27 16:08:42 +02:00
namespace.c
ncbuf.c
pattern.c MINOR: map: mapfile ordering also matters for tree-based match types 2024-01-11 11:13:54 +01:00
payload.c MEDIUM: tree-wide: fetches that may return IPV4+IPV6 now return ADDR 2023-07-03 16:32:01 +02:00
peers.c BUG/MEDIUM: peer: Notify the applet won't consume data when it waits for sync 2024-08-02 08:42:29 +02:00
pipe.c
pool.c OPTIM: pool: improve needed_avg cache line access pattern 2024-07-09 16:46:38 +02:00
proto_quic.c BUG/MIONR: quic: fix fc_lost 2024-08-01 11:35:27 +02:00
proto_rhttp.c CLEANUP: proto: rename TID affinity callbacks 2024-07-11 15:14:06 +02:00
proto_sockpair.c
proto_tcp.c MINOR: tcp_sample: Move TCP low level sample fetch function to control layer 2024-07-31 10:29:42 +02:00
proto_udp.c MEDIUM: udp: allow to retrieve the frontend destination address 2024-01-02 11:44:42 +01:00
proto_uxdg.c
proto_uxst.c MINOR: proto: fix coding style 2024-05-22 12:00:11 +02:00
protocol.c MINOR: listener/protocol: add proto name in alerts 2024-04-12 18:51:40 +02:00
proxy.c MEDIUM: quic: implement quic-initial rules 2024-07-25 15:39:39 +02:00
qmux_http.c MEDIUM: mux-quic: add BUG_ON if sending on locally closed QCS 2023-12-21 15:42:08 +01:00
qmux_trace.c MEDIUM: mux-quic: simplify sending API 2024-01-31 16:28:54 +01:00
qpack-dec.c MINOR: h3/qpack: adjust naming for errors 2024-05-16 10:31:17 +02:00
qpack-enc.c BUG/MEDIUM: qpack: allow 6xx..9xx status codes 2024-01-29 15:40:19 +01:00
qpack-tbl.c
queue.c MINOR: queue: add a function to check for TOCTOU after queueing 2024-07-29 09:27:01 +02:00
quic_ack.c BUILD: quic: Variable name typo inside a BUG_ON(). 2024-02-05 14:31:21 +01:00
quic_cc_cubic.c MINOR: quic: Add information to "show quic" for CUBIC cc. 2024-07-26 16:42:44 +02:00
quic_cc_newreno.c MINOR: quic: Avoid cc priv buffer overflow. 2024-07-24 11:07:19 +02:00
quic_cc_nocc.c REORG: quic: Move QUIC path definitions/declarations to quic_cc module 2023-11-28 15:37:50 +01:00
quic_cc.c
quic_cid.c REORG: quic: remove quic_cid_trees reference from proto_quic 2024-07-03 15:02:40 +02:00
quic_cli.c MINOR: quic: Dump TX in flight bytes vs window values ratio. 2024-07-26 16:42:44 +02:00
quic_conn.c BUG/MEDIUM: quic: prevent conn freeze on 0RTT undeciphered content 2024-07-31 10:24:53 +02:00
quic_fctl.c MINOR: mux-quic: define a flow control related type 2024-01-31 16:28:54 +01:00
quic_frame.c BUG/MINOR: quic: reject unknown frame type 2024-02-15 17:04:17 +01:00
quic_loss.c MINOR: quic: Add a counter for reordered packets 2024-02-14 11:32:29 +01:00
quic_openssl_compat.c BUG/MEDIUM: quic: keylog callback not called (USE_OPENSSL_COMPAT) 2024-01-16 10:17:27 +01:00
quic_retransmit.c REORG: quic: Add a new module for retransmissions 2023-11-28 15:47:18 +01:00
quic_retry.c MEDIUM: ssl/quic: implement quic crypto with EVP_AEAD 2024-07-25 13:45:38 +02:00
quic_rules.c MINOR: quic: implement send-retry quic-initial rules 2024-07-25 15:39:39 +02:00
quic_rx.c BUG/MEDIUM: quic: prevent conn freeze on 0RTT undeciphered content 2024-07-31 10:24:53 +02:00
quic_sock.c BUG/MEDIUM: quic: fix invalid conn reject with CONNECTION_REFUSED 2024-07-26 15:24:35 +02:00
quic_ssl.c BUILD: ssl: replace USE_OPENSSL_AWSLC by OPENSSL_IS_AWSLC 2024-07-30 18:53:08 +02:00
quic_stats.c MINOR: stats: introduce a more expressive stat definition method 2024-04-26 10:20:57 +02:00
quic_stream.c MEDIUM: mux-quic: properly handle conn Tx buf exhaustion 2024-01-31 16:28:54 +01:00
quic_tls.c BUG/MINOR: quic: Too shord datagram during O-RTT handshakes (aws-lc only) 2024-08-02 15:25:26 +02:00
quic_tp.c BUG/MEDIUM: quic: don't blindly rely on unaligned accesses 2024-04-06 00:07:49 +02:00
quic_trace.c CLEANUP: quic: rename TID affinity elements 2024-07-11 15:14:06 +02:00
quic_tx.c BUG/MINOR: quic: Too short datagram during packet building failures (aws-lc only) 2024-08-05 13:40:51 +02:00
raw_sock.c MEDIUM: raw-sock: Specifiy amount of data to send via snd_pipe callback 2023-10-17 18:51:13 +02:00
regex.c
resolvers.c BUILD: tree-wide: cast arguments to tolower/toupper to unsigned char (2) 2024-07-18 13:29:52 +02:00
ring.c MINOR: ring: count processed messages in ring_dispatch_messages() 2024-07-24 17:59:03 +02:00
sample.c BUG/MINOR: jwt: fix variable initialisation 2024-07-08 14:23:14 +02:00
server_state.c BUILD: tree-wide: cast arguments to tolower/toupper to unsigned char (2) 2024-07-18 13:29:52 +02:00
server.c BUG/MINOR: server: Don't warn fallback IP is used during init-addr resolution 2024-07-18 16:39:38 +02:00
session.c BUG/MINOR: session: Eval L4/L5 rules defined in the default section 2024-07-12 15:27:04 +02:00
sha1.c
shctx.c DEBUG: shctx: name shared memory using vma_set_name() 2024-05-21 17:55:03 +02:00
signal.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
sink.c MEDIUM: sink: assume sft appctx stickiness 2024-07-25 14:56:19 +02:00
slz.c
sock_inet.c
sock_unix.c MEIDUM: unix sock: use my_socketat to create bind socket 2024-04-30 21:38:24 +02:00
sock.c MEDIUM: config: prevent communication with privileged ports 2024-05-24 14:36:31 +02:00
ssl_ckch.c MINOR: ssl: change issuers-chain for show_cert_detail() 2024-07-17 16:52:06 +02:00
ssl_clienthello.c BUILD: ssl: replace USE_OPENSSL_AWSLC by OPENSSL_IS_AWSLC 2024-07-30 18:53:08 +02:00
ssl_crtlist.c MEDIUM: ssl: don't load file by discovering them in crt-store 2024-05-21 18:30:45 +02:00
ssl_gencert.c MEDIUM: ssl: allow to change the OpenSSL security level from global section 2024-03-12 17:37:11 +01:00
ssl_ocsp.c MEDIUM: ssl/cli: handle crt-store keywords in crt-list over the CLI 2024-05-17 17:35:51 +02:00
ssl_sample.c MINOR: vars: Use a description to set/unset a variable instead of its hash and scope 2024-07-18 16:39:38 +02:00
ssl_sock.c BUILD: ssl: replace USE_OPENSSL_AWSLC by OPENSSL_IS_AWSLC 2024-07-30 18:53:08 +02:00
ssl_utils.c
stats-file.c BUILD: stats: remove non portable getline() usage 2024-05-17 14:53:19 +02:00
stats-html.c MINOR: stats-html: Display reuse ratio for spop connections 2024-07-12 15:27:05 +02:00
stats-json.c MINOR: stats: update ambiguous "metrics" naming to "stat_cols" 2024-04-26 10:20:57 +02:00
stats-proxy.c MINOR: stats-html: Display reuse ratio for spop connections 2024-07-12 15:27:05 +02:00
stats.c CLEANUP: assorted typo fixes in the code and comments 2024-05-03 09:01:36 +02:00
stconn.c BUG/MINOR: stconn: bs.id and fs.id had their dependencies incorrect 2024-07-30 18:39:29 +02:00
stick_table.c BUG/MINOR: stick-table: fix crash for src_inc_gpc() without stkcounter 2024-07-18 16:12:36 +02:00
stream.c MINOR: stream: Add a pointer to set the parent stream 2024-07-18 16:39:38 +02:00
systemd.c MEDIUM: mworker: get rid of libsystemd 2024-04-03 15:53:18 +02:00
task.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
tcp_act.c MINOR: server: define pool-conn-name keyword 2024-05-24 14:36:31 +02:00
tcp_rules.c MINOR: log/backend: prevent tcp-{request,response} use with LOG mode 2023-11-18 11:16:21 +01:00
tcp_sample.c MINOR: tcp_sample: Move TCP low level sample fetch function to control layer 2024-07-31 10:29:42 +02:00
tcpcheck.c MEDIUM: spoe/tcpcheck: Reintroduce SPOP check as a customized tcp-check 2024-07-24 14:19:10 +02:00
thread.c MINOR: config: add thread-hard-limit to set an upper bound to nbthread 2024-05-24 09:46:49 +02:00
time.c
tools.c BUILD: tree-wide: cast arguments to tolower/toupper to unsigned char (2) 2024-07-18 13:29:52 +02:00
trace.c BUILD: trace: fix warning on null dereference 2024-05-24 14:36:03 +02:00
uri_auth.c MINOR: stats: use STAT_F_* prefix for flags 2024-04-22 16:25:18 +02:00
uri_normalizer.c BUILD: tree-wide: cast arguments to tolower/toupper to unsigned char (2) 2024-07-18 13:29:52 +02:00
vars.c MEDIUM: vars: Be able to retrieve variable of the parent stream, if any 2024-07-18 17:06:12 +02:00
version.c
wdt.c
xprt_handshake.c
xprt_quic.c CLEANUP: quic: rename TID affinity elements 2024-07-11 15:14:06 +02:00