Ox: Improve stability of decrypting.

Accept all allowed time stamps and remove invalid xml chars from
decrypted messages.
v0.4
Martin Dosch 2 years ago
parent 10c9986e7d
commit a196856f76

12
ox.go

@ -9,6 +9,7 @@ import (
"errors"
"log"
"os"
"regexp"
"runtime"
"strings"
"time"
@ -46,8 +47,12 @@ func oxDecrypt(m xmpp.Chat, client *xmpp.Client, user string,
if err != nil {
return "error", time.Now(), err
}
// Remove invalid code points.
message := strings.ToValidUTF8(string(decryptMsg.Data), "")
reg := regexp.MustCompile(`[\x{0000}-\x{0008}\x{000B}\x{000C}\x{000E}-\x{001F}]`)
message = reg.ReplaceAllString(message, "")
doc := etree.NewDocument()
err = doc.ReadFromBytes(decryptMsg.Data)
err = doc.ReadFromString(message)
if err != nil {
return "error", time.Now(), err
}
@ -76,7 +81,10 @@ func oxDecrypt(m xmpp.Chat, client *xmpp.Client, user string,
}
msgStamp, err := time.Parse("2006-01-02T15:04:05Z", stamp.Value)
if err != nil {
return "error", time.Now(), err
msgStamp, err = time.Parse("2006-01-02T15:04:05Z0700", stamp.Value)
if err != nil {
return "error", time.Now(), err
}
}
payload := signcrypt.SelectElement("payload")
if payload == nil {

Loading…
Cancel
Save