From cbc1a42c2263acf0d425f4ee9ab49876927aca09 Mon Sep 17 00:00:00 2001 From: Zachary Olstein Date: Sat, 5 Apr 2025 01:36:32 -0700 Subject: [PATCH 1/2] Respect payload length of ws control messages Websocket control messages are allowed to have payloads. Don't set the payload lenght to zero when deserializing them, which can corrupt the message and potentially the remainder of the stream. --- edge-ws/src/lib.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/edge-ws/src/lib.rs b/edge-ws/src/lib.rs index 5b7a243..eb050bd 100644 --- a/edge-ws/src/lib.rs +++ b/edge-ws/src/lib.rs @@ -193,12 +193,7 @@ impl FrameHeader { let frame_header = FrameHeader { frame_type, - payload_len: matches!( - frame_type, - FrameType::Binary(_) | FrameType::Text(_) | FrameType::Continue(_) - ) - .then(|| payload_len) - .unwrap_or(0), + payload_len, mask_key, }; From 436b463920565f95595c6497889ac9eebb53bb29 Mon Sep 17 00:00:00 2001 From: Zachary Olstein Date: Sat, 5 Apr 2025 09:27:46 -0700 Subject: [PATCH 2/2] Update changelog --- edge-ws/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/edge-ws/CHANGELOG.md b/edge-ws/CHANGELOG.md index 180d398..38ba5e0 100644 --- a/edge-ws/CHANGELOG.md +++ b/edge-ws/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +* Respect payload length of control messages ## [0.4.0] - 2025-01-02 * Option to erase the generics from the IO errors