commit 024fc9f311a51cf40b77d1b199b5e14919e0cfb4
parent 7fc327d9a359ee670aa54b1400cd3d9c6094444f
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Fri, 18 Jul 2025 18:09:48 +0000
NATS data is escaped
Diffstat:
M | main.go | | | 22 | +++++++++++++++++++++- |
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/main.go b/main.go
@@ -744,8 +744,28 @@ func (natsim *NatsIM) natsReceive(m *nats.Msg) {
return
}
+ strdata := string(m.Data)
+ suffix := 0
+ for len(strdata) > 0 && strdata[len(strdata)-1] == '\n' {
+ suffix++
+ strdata = strdata[0 : len(strdata)-1]
+ }
+
+ var data strings.Builder
+ for i, line := range strings.Split(strdata, "\n") {
+ if i > 0 {
+ data.WriteString("\n")
+ }
+ qline := strconv.QuoteToGraphic(line)
+ if qline[0] != '"' || qline[len(qline)-1] != '"' {
+ panic("Expected double-quotes")
+ }
+ data.WriteString(qline[1 : len(qline)-1])
+ }
+ data.WriteString(strings.Repeat("\\n", suffix))
+
var sb strings.Builder
- sb.WriteString(packMark(natsim.Irc.Show, m.Subject, string(m.Data)))
+ sb.WriteString(packMark(natsim.Irc.Show, m.Subject, data.String()))
if m.Reply != "" && natsim.Irc.ShowReply != nil {
sb.WriteString(natsim.Irc.ShowReply.Start)