aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJohn Thacker <johnthacker@gmail.com>2022-08-19 19:35:12 -0400
committerJohn Thacker <johnthacker@gmail.com>2022-08-19 19:37:41 -0400
commit346c53b0b21cb959f468bc335a1ba36fcdf13106 (patch)
tree88aae8cbea8af03cbf2c862c4a551f6d2fa8dba3 /epan
parentd0c8efe8890fb1e45529f784753725caebf71ae8 (diff)
QUIC: In stateless reset only set from_server if token found
When calling quic_find_stateless_reset_token, only change the from_server pointer is the reset token is actually found. Fixes a few cases where a new Initial connection is sent with client and server reversed. Also fixes an error failing to dereference a pointer to a boolean.
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-quic.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/epan/dissectors/packet-quic.c b/epan/dissectors/packet-quic.c
index 93d54eb4f9..3481ddf135 100644
--- a/epan/dissectors/packet-quic.c
+++ b/epan/dissectors/packet-quic.c
@@ -3503,13 +3503,15 @@ quic_find_stateless_reset_token(packet_info *pinfo, tvbuff_t *tvb, gboolean *fro
const quic_cid_item_t *cids;
if (conn) {
- *from_server = conn->server_port == pinfo->srcport &&
+ gboolean conn_from_server;
+ conn_from_server = conn->server_port == pinfo->srcport &&
addresses_equal(&conn->server_address, &pinfo->src);
- cids = from_server ? &conn->server_cids : &conn->client_cids;
+ cids = conn_from_server ? &conn->server_cids : &conn->client_cids;
while (cids) {
const quic_cid_t *cid = &cids->data;
if (cid->reset_token_set &&
!tvb_memeql(tvb, -16, cid->reset_token, 16) ) {
+ *from_server = conn_from_server;
return conn;
}
cids = cids->next;