From cf1545870af2de418a6bccd4461f92330dc2f605 Mon Sep 17 00:00:00 2001 From: C. McEnroe Date: Mon, 23 Mar 2020 13:13:43 -0400 Subject: Assume worst case for unknown user and host in splitMessage The default USERLEN of 9 doesn't have a great source, the RFC only says that nicks are length 9, so my assumption is that usernames are not longer. --- command.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'command.c') diff --git a/command.c b/command.c index 9341310..f53cbe7 100644 --- a/command.c +++ b/command.c @@ -55,14 +55,12 @@ static void echoMessage(char *cmd, uint id, char *params) { static void splitMessage(char *cmd, uint id, char *params) { if (!params) return; - // FIXME: Get USERLEN, HOSTLEN from ISUPPORT and assume worst case if - // self.user and self.host are unset? - const char *nick = self.nick; - const char *user = (self.user ? self.user : "*"); - const char *host = (self.host ? self.host : "*"); int overhead = snprintf( - NULL, 0, ":%s!%s@%s %s %s :\r\n", - nick, user, host, cmd, idNames[id] + NULL, 0, ":%s!%*s@%*s %s %s :\r\n", + self.nick, + (self.user ? 0 : network.userLen), (self.user ? self.user : "*"), + (self.host ? 0 : network.hostLen), (self.host ? self.host : "*"), + cmd, idNames[id] ); assert(overhead > 0 && overhead < 512); int chunk = 512 - overhead; -- cgit 1.4.1-2-gfad0