diff --git a/cmd/agentbbs/main.go b/cmd/agentbbs/main.go index 0ce1372..5f7e00b 100644 --- a/cmd/agentbbs/main.go +++ b/cmd/agentbbs/main.go @@ -1856,6 +1856,10 @@ func validIRCServer(s string) bool { return false } } + portNum, err := strconv.Atoi(port) + if err != nil || portNum < 1 || portNum > 65535 { + return false + } } if host == "" || len(host) > 255 { return false diff --git a/cmd/agentbbs/main_test.go b/cmd/agentbbs/main_test.go new file mode 100644 index 0000000..46648aa --- /dev/null +++ b/cmd/agentbbs/main_test.go @@ -0,0 +1,26 @@ +package main + +import "testing" + +func TestValidIRCServerPortRange(t *testing.T) { + for _, server := range []string{ + "irc.example.com", + "irc.example.com:1", + "irc.example.com:6667", + "irc.example.com:65535", + } { + if !validIRCServer(server) { + t.Errorf("validIRCServer(%q) = false, want true", server) + } + } + + for _, server := range []string{ + "irc.example.com:0", + "irc.example.com:65536", + "irc.example.com:99999", + } { + if validIRCServer(server) { + t.Errorf("validIRCServer(%q) = true, want false", server) + } + } +}