From 61fc526b5dfbd6f5865a84b7e8d20beec4a8f595 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 11 Jan 2015 13:24:08 +0100 Subject: [PATCH] subs: Oops when a telegram doesn't end with a newline Telegrams should always end with a newline. The common cause for a missing newline is misuse of wu() to print partial lines. Almost always works, as the read command merges telegrams arriving in quick succession. But if the telegrams are more than five seconds apart (clock jumped somehow), we get a telegram header in the middle of a line. Signed-off-by: Markus Armbruster --- src/lib/subs/wu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/subs/wu.c b/src/lib/subs/wu.c index cf3c175af..cbcf979e2 100644 --- a/src/lib/subs/wu.c +++ b/src/lib/subs/wu.c @@ -28,7 +28,7 @@ * * Known contributors to this file: * Steve McClure, 2000 - * Markus Armbruster, 2005-2011 + * Markus Armbruster, 2005-2015 */ #include @@ -138,6 +138,7 @@ typed_wu(natid from, natid to, char *message, int type) tel.tel_from = from; (void)time(&tel.tel_date); len = strlen(message); + CANT_HAPPEN(len && message[len - 1] != '\n'); tel.tel_length = len; tel.tel_type = type; tel.tel_cont = !telegram_is_new(to, &tel); -- 2.43.0