Bläddra i källkod

strings: Disallow nicknames that mess with the protocol in bad ways

tags/v0.1.0
Daniel Oaks 8 år sedan
förälder
incheckning
7ce62444de
1 ändrade filer med 11 tillägg och 2 borttagningar
  1. 11
    2
      irc/strings.go

+ 11
- 2
irc/strings.go Visa fil

@@ -1,9 +1,10 @@
1 1
 package irc
2 2
 
3 3
 import (
4
-	"golang.org/x/text/unicode/norm"
5 4
 	"regexp"
6 5
 	"strings"
6
+
7
+	"golang.org/x/text/unicode/norm"
7 8
 )
8 9
 
9 10
 var (
@@ -35,7 +36,15 @@ func (name Name) IsChannel() bool {
35 36
 }
36 37
 
37 38
 func (name Name) IsNickname() bool {
38
-	return NicknameExpr.MatchString(name.String())
39
+	namestr := name.String()
40
+	// * is used for unregistered clients
41
+	// , is used as a separator by the protocol
42
+	// # is a channel prefix
43
+	// @+ are channel membership prefixes
44
+	if namestr == "*" || strings.Contains(namestr, ",") || strings.Contains("#@+", string(namestr[0])) {
45
+		return false
46
+	}
47
+	return NicknameExpr.MatchString(namestr)
39 48
 }
40 49
 
41 50
 // conversions

Laddar…
Avbryt
Spara