subs: Oops when a telegram doesn't end with a newline
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 11 Jan 2015 12:24:08 +0000 (13:24 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 2 Mar 2015 07:20:50 +0000 (08:20 +0100)
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 <armbru@pond.sub.org>
src/lib/subs/wu.c

index cf3c175af9f3cd1c18ce75502f162d30a9ee2351..cbcf979e2ded1d94382f6e0248aad71771109a5a 100644 (file)
@@ -28,7 +28,7 @@
  *
  *  Known contributors to this file:
  *     Steve McClure, 2000
- *     Markus Armbruster, 2005-2011
+ *     Markus Armbruster, 2005-2015
  */
 
 #include <config.h>
@@ -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);