fixed parser bug when handling empty strings, added empty string check to email alarm

This commit is contained in:
Christopher Ramey 2021-01-17 09:44:39 -09:00
parent 2d99960f06
commit 3a4317f3a9
2 changed files with 20 additions and 3 deletions

View File

@ -44,6 +44,9 @@ func (a *AlarmEmail) Parse(tk string) (bool, error) {
case "smtp": case "smtp":
a.state = TK_SMTP a.state = TK_SMTP
default: default:
if len(a.To) < 1 {
return false, fmt.Errorf("email alarm requires to address")
}
return false, nil return false, nil
} }
@ -56,6 +59,9 @@ func (a *AlarmEmail) Parse(tk string) (bool, error) {
a.state = TK_NONE a.state = TK_NONE
case TK_TO: case TK_TO:
if strings.TrimSpace(tk) == "" {
return false, fmt.Errorf("to address cannot be empty")
}
a.To = append(a.To, tk) a.To = append(a.To, tk)
a.state = TK_NONE a.state = TK_NONE

View File

@ -292,10 +292,17 @@ func (p *Parser) Split(data []byte, atEOF bool) (int, []byte, error) {
} }
case '\'', '"', '`': case '\'', '"', '`':
if started && quote == c { // When the quote ends
if quote == c {
// if we've gotten data, return it
if started {
return i + 1, data[startidx:i], nil return i + 1, data[startidx:i], nil
} }
// if we haven't return nothing
return i + 1, []byte{}, nil
}
// start a quoted string
if !ignoreline && quote == 0 { if !ignoreline && quote == 0 {
quote = c quote = c
} }
@ -314,6 +321,10 @@ func (p *Parser) Split(data []byte, atEOF bool) (int, []byte, error) {
} }
if atEOF { if atEOF {
if quote != 0 {
return 0, nil, fmt.Errorf("unterminated quote")
}
if ignoreline { if ignoreline {
return len(data), nil, nil return len(data), nil, nil
} }