From fd6ed36995761fad9e04b5334d7df9b552adc63d Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Wed, 15 Jun 2016 17:41:53 +1000 Subject: [PATCH] strings: Restrict *? explicitly as they are used for mask matching --- irc/strings.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/irc/strings.go b/irc/strings.go index 52126c68..97472276 100644 --- a/irc/strings.go +++ b/irc/strings.go @@ -38,13 +38,16 @@ func (name Name) IsChannel() bool { func (name Name) IsNickname() bool { namestr := name.String() // * is used for unregistered clients + // * is used for mask matching + // ? is used for mask matching // , is used as a separator by the protocol - // # is a channel prefix - // @+ are channel membership prefixes // ! separates username from nickname // @ separates nick+user from hostname - if namestr == "*" || strings.Contains(namestr, ",") || strings.Contains("#@+", string(namestr[0])) || - strings.Contains(namestr, "!") || strings.Contains(namestr, "@") { + // # is a channel prefix + // @+ are channel membership prefixes + if strings.Contains(namestr, "*") || strings.Contains(namestr, "?") || + strings.Contains(namestr, ",") || strings.Contains(namestr, "!") || + strings.Contains(namestr, "@") || strings.Contains("#@+", string(namestr[0])) { return false } // names that look like hostnames are restricted to servers, as with other ircds