commit 12f1201ca2b3142466bda94d25ac1f38ff0dc332
parent 7aff348b395c4cf9b04665c74c449c68b9e6da74
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Mon, 28 Jul 2025 17:03:54 +0000
Decoding errors in sent data are handled
Diffstat:
M | main.go | | | 26 | ++++++++++++++++++-------- |
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/main.go b/main.go
@@ -679,24 +679,34 @@ func (natsim *NatsIM) ircReceive(e *irc.Event) {
if len(data) >= 2 && data[0] == data[len(data)-1] && (data[0] == '"' || data[0] == '`' || data[0] == '#' || data[0] == '|') {
switch data[0] {
case '#':
- if decoded, err := hex.DecodeString(data[1:len(data)-1]); err == nil {
- data = string(decoded)
+ if decoded, err := hex.DecodeString(data[1 : len(data)-1]); err != nil {
+ natsim.ircSendError("hexDecode", err)
+ return
+ } else {
+ natsim.curMsg.Data = decoded
}
case '|':
- if decoded, err := base64.StdEncoding.DecodeString(data[1:len(data)-1]); err == nil {
- data = string(decoded)
+ if decoded, err := base64.StdEncoding.DecodeString(data[1 : len(data)-1]); err != nil {
+ natsim.ircSendError("b64Decode", err)
+ return
+ } else {
+ natsim.curMsg.Data = decoded
}
default:
- if unquoted, err := strconv.Unquote(data); err == nil {
- data = unquoted
+ if unquoted, err := strconv.Unquote(data); err != nil {
+ natsim.ircSendError("Unquote", err)
+ return
+ } else {
+ natsim.curMsg.Data = []byte(unquoted)
}
}
} else if unquoted, err := strconv.Unquote("\"" + data + "\""); err == nil {
- data = unquoted
+ natsim.curMsg.Data = []byte(unquoted)
+ } else {
+ natsim.curMsg.Data = []byte(data)
}
natsim.curMsg.Subject = subject
- natsim.curMsg.Data = []byte(data)
if err := natsim.nc.PublishMsg(&natsim.curMsg); err != nil {
natsim.ircSendError("Publish", err)