natsim

NATS ↔ Instant Messaging Bridge
git clone https://git.instinctive.eu/natsim.git
Log | Files | Refs | README | LICENSE

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:
Mmain.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)