mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-25 13:29:27 +01:00
validate normalized masks as IRC params
This commit is contained in:
parent
9670d96282
commit
af2b433195
@ -15,6 +15,8 @@ import (
|
|||||||
"golang.org/x/text/secure/precis"
|
"golang.org/x/text/secure/precis"
|
||||||
"golang.org/x/text/unicode/norm"
|
"golang.org/x/text/unicode/norm"
|
||||||
"golang.org/x/text/width"
|
"golang.org/x/text/width"
|
||||||
|
|
||||||
|
"github.com/oragono/oragono/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -270,7 +272,11 @@ func CanonicalizeMaskWildcard(userhost string) (expanded string, err error) {
|
|||||||
if host != "*" {
|
if host != "*" {
|
||||||
host = strings.ToLower(host)
|
host = strings.ToLower(host)
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%s!%s@%s", nick, user, host), nil
|
expanded = fmt.Sprintf("%s!%s@%s", nick, user, host)
|
||||||
|
if utils.SafeErrorParam(expanded) != expanded {
|
||||||
|
err = errInvalidCharacter
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func foldASCII(str string) (result string, err error) {
|
func foldASCII(str string) (result string, err error) {
|
||||||
|
@ -193,7 +193,7 @@ func TestSkeleton(t *testing.T) {
|
|||||||
func TestCanonicalizeMaskWildcard(t *testing.T) {
|
func TestCanonicalizeMaskWildcard(t *testing.T) {
|
||||||
tester := func(input, expected string, expectedErr error) {
|
tester := func(input, expected string, expectedErr error) {
|
||||||
out, err := CanonicalizeMaskWildcard(input)
|
out, err := CanonicalizeMaskWildcard(input)
|
||||||
if out != expected {
|
if expectedErr == nil && out != expected {
|
||||||
t.Errorf("expected %s to canonicalize to %s, instead %s", input, expected, out)
|
t.Errorf("expected %s to canonicalize to %s, instead %s", input, expected, out)
|
||||||
}
|
}
|
||||||
if err != expectedErr {
|
if err != expectedErr {
|
||||||
@ -216,6 +216,10 @@ func TestCanonicalizeMaskWildcard(t *testing.T) {
|
|||||||
tester("Shivaram*", "shivaram*!*@*", nil)
|
tester("Shivaram*", "shivaram*!*@*", nil)
|
||||||
tester("*SHIVARAM*", "*shivaram*!*@*", nil)
|
tester("*SHIVARAM*", "*shivaram*!*@*", nil)
|
||||||
tester("*SHIVARAM* ", "*shivaram*!*@*", nil)
|
tester("*SHIVARAM* ", "*shivaram*!*@*", nil)
|
||||||
|
|
||||||
|
tester(":shivaram", "", errInvalidCharacter)
|
||||||
|
tester("shivaram!us er@host", "", errInvalidCharacter)
|
||||||
|
tester("shivaram!user@ho st", "", errInvalidCharacter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func validFoldTester(first, second string, equal bool, folder func(string) (string, error), t *testing.T) {
|
func validFoldTester(first, second string, equal bool, folder func(string) (string, error), t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user