From e15b9f7eb26a5301a85d809de89492e80a044c04 Mon Sep 17 00:00:00 2001 From: r00t Date: Thu, 5 Jan 2023 22:40:58 +0100 Subject: [PATCH] [transport] detect and warn about unaligned esc sequences --- sml/src/sml_transport.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sml/src/sml_transport.c b/sml/src/sml_transport.c index 17f868c..7d719a6 100644 --- a/sml/src/sml_transport.c +++ b/sml/src/sml_transport.c @@ -90,6 +90,17 @@ size_t sml_transport_read(int fd, unsigned char *buffer, size_t max_len) { return 0; } + for (int i=1;i<4;i++){ + if (len>i && memcmp(&buf[len-i], esc_seq, 4) == 0){ + if (buf[len-i+4] == 0x1a) { + fprintf(stderr, "libsml: warning: unaligned end esc sequence found in data, stream desynced?\n"); + } else if (buf[len-i+4] == 0x01) { + fprintf(stderr, "libsml: warning: unaligned (likely) start esc sequence found in data, stream desynced?\n"); + } else { + fprintf(stderr, "libsml: warning: unaligned esc sequence found in data, stream desynced?\n"); + } + } + } if (memcmp(&buf[len], esc_seq, 4) == 0) { // found esc sequence len += 4;