mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-12-09 03:31:41 +01:00
MINOR: quic: Wrong Initial packet connection initialization
->qc (QUIC connection) member of packet structure were badly initialized when received as second Initial packet (from picoquic -Q for instance). This leaded to corrupt the quic_conn structure with random behaviors as size effects. This bug came with this commit: "MINOR: quic: Possible wrong connection identification"
This commit is contained in:
parent
ca98a7f9c0
commit
f67b35620e
@ -3759,9 +3759,9 @@ static ssize_t qc_lstnr_pkt_rcv(unsigned char **buf, const unsigned char *end,
|
|||||||
}
|
}
|
||||||
HA_RWLOCK_WRUNLOCK(QUIC_LOCK, &l->rx.cids_lock);
|
HA_RWLOCK_WRUNLOCK(QUIC_LOCK, &l->rx.cids_lock);
|
||||||
|
|
||||||
pkt->qc = qc;
|
|
||||||
if (n == &qc->odcid_node) {
|
if (n == &qc->odcid_node) {
|
||||||
/* Enqueue this packet. */
|
/* Enqueue this packet. */
|
||||||
|
pkt->qc = qc;
|
||||||
MT_LIST_APPEND(&l->rx.pkts, &pkt->rx_list);
|
MT_LIST_APPEND(&l->rx.pkts, &pkt->rx_list);
|
||||||
/* Try to accept a new connection. */
|
/* Try to accept a new connection. */
|
||||||
listener_accept(l);
|
listener_accept(l);
|
||||||
@ -3769,6 +3769,7 @@ static ssize_t qc_lstnr_pkt_rcv(unsigned char **buf, const unsigned char *end,
|
|||||||
else {
|
else {
|
||||||
quic_conn_free(qc);
|
quic_conn_free(qc);
|
||||||
qc = ebmb_entry(n, struct quic_conn, odcid_node);
|
qc = ebmb_entry(n, struct quic_conn, odcid_node);
|
||||||
|
pkt->qc = qc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is the DCID node sent in this packet by the client. */
|
/* This is the DCID node sent in this packet by the client. */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user