Prevent panicing when parsing invalid messages
This commit is contained in:
parent
cf759883aa
commit
83056c5396
|
@ -19,7 +19,13 @@ func parseMessage(line string) *Message {
|
||||||
|
|
||||||
if strings.HasPrefix(line, ":") {
|
if strings.HasPrefix(line, ":") {
|
||||||
cmdStart = strings.Index(line, " ") + 1
|
cmdStart = strings.Index(line, " ") + 1
|
||||||
msg.Prefix = line[1 : cmdStart-1]
|
|
||||||
|
if cmdStart > 0 {
|
||||||
|
msg.Prefix = line[1 : cmdStart-1]
|
||||||
|
} else {
|
||||||
|
// Invalid message
|
||||||
|
return &msg
|
||||||
|
}
|
||||||
|
|
||||||
if i := strings.Index(msg.Prefix, "!"); i > 0 {
|
if i := strings.Index(msg.Prefix, "!"); i > 0 {
|
||||||
msg.Nick = msg.Prefix[:i]
|
msg.Nick = msg.Prefix[:i]
|
||||||
|
|
|
@ -71,3 +71,10 @@ func TestParseMessage(t *testing.T) {
|
||||||
assert.Equal(t, tc.expected, parseMessage(tc.input))
|
assert.Equal(t, tc.expected, parseMessage(tc.input))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBadMessagePanic(t *testing.T) {
|
||||||
|
parseMessage(":user\r\n")
|
||||||
|
parseMessage(":\r\n")
|
||||||
|
parseMessage(":")
|
||||||
|
parseMessage("")
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue