From 2dfb1cc56c75a69b29b1e79871efe5709248b715 Mon Sep 17 00:00:00 2001 From: andber1 <82754113+andber1@users.noreply.github.com> Date: Tue, 13 Aug 2024 20:47:43 +0200 Subject: [PATCH] Add missing sentinel specifc code (to allow sentinels other than 0) --- framed/src/bytes.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framed/src/bytes.rs b/framed/src/bytes.rs index 5301d07..050fa67 100644 --- a/framed/src/bytes.rs +++ b/framed/src/bytes.rs @@ -201,6 +201,10 @@ impl Codec { } let cobs_len = cobs_enc.finalize() .map_err(|_| Error::CobsEncodeFailed)?; + // make sure sentinel is not in output buffer + for x in &mut dest[..cobs_len] { + *x ^= FRAME_END_SYMBOL; + } cobs_len }; dest[cobs_len] = FRAME_END_SYMBOL; @@ -288,7 +292,7 @@ impl Codec { if cobs_payload.len() == 0 { 0 } else { - cobs::decode(cobs_payload, dest) + cobs::decode_with_sentinel(cobs_payload, dest, FRAME_END_SYMBOL) .map_err(|_| Error::CobsDecodeFailed)? }; let cobs_decoded = &dest[0..cobs_decoded_len];