From: Markus Armbruster Date: Sun, 11 Jan 2015 12:24:08 +0000 (+0100) Subject: subs: Oops when a telegram doesn't end with a newline X-Git-Tag: v4.3.33~72 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=61fc526b5dfbd6f5865a84b7e8d20beec4a8f595 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 --- 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);