From 7ce62444de14268065e1e0fc12fb6bffead1c85b Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Tue, 12 Apr 2016 22:40:58 +1000 Subject: [PATCH] strings: Disallow nicknames that mess with the protocol in bad ways --- irc/strings.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/irc/strings.go b/irc/strings.go index 7b26a129..59abb700 100644 --- a/irc/strings.go +++ b/irc/strings.go @@ -1,9 +1,10 @@ package irc import ( - "golang.org/x/text/unicode/norm" "regexp" "strings" + + "golang.org/x/text/unicode/norm" ) var ( @@ -35,7 +36,15 @@ func (name Name) IsChannel() bool { } func (name Name) IsNickname() bool { - return NicknameExpr.MatchString(name.String()) + namestr := name.String() + // * is used for unregistered clients + // , is used as a separator by the protocol + // # is a channel prefix + // @+ are channel membership prefixes + if namestr == "*" || strings.Contains(namestr, ",") || strings.Contains("#@+", string(namestr[0])) { + return false + } + return NicknameExpr.MatchString(namestr) } // conversions