From 0a418a7128ab5a7f10fdd925275a85383e3a8e64 Mon Sep 17 00:00:00 2001
From: Jono Wenger <jono@elixxir.io>
Date: Fri, 10 Mar 2023 09:44:28 -0800
Subject: [PATCH] Truncate message safely for log messages

---
 wasm/dm.go | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/wasm/dm.go b/wasm/dm.go
index 27d1e81d..0328a209 100644
--- a/wasm/dm.go
+++ b/wasm/dm.go
@@ -322,7 +322,7 @@ func (dmc *DMClient) SendText(_ js.Value, args []js.Value) any {
 
 	jww.DEBUG.Printf("SendText(%s, %d, %s...)",
 		base64.RawStdEncoding.EncodeToString(partnerPubKeyBytes)[:8],
-		partnerToken, message[:10])
+		partnerToken, truncate(message, 10))
 
 	promiseFn := func(resolve, reject func(args ...any) js.Value) {
 		sendReport, err := dmc.api.SendText(partnerPubKeyBytes,
@@ -381,7 +381,7 @@ func (dmc *DMClient) SendReply(_ js.Value, args []js.Value) any {
 		base64.RawStdEncoding.EncodeToString(partnerPubKeyBytes)[:8],
 		partnerToken,
 		base64.RawStdEncoding.EncodeToString(replyID),
-		message[:10])
+		truncate(message, 10))
 
 	promiseFn := func(resolve, reject func(args ...any) js.Value) {
 		sendReport, err := dmc.api.SendReply(partnerPubKeyBytes,
@@ -428,7 +428,7 @@ func (dmc *DMClient) SendReaction(_ js.Value, args []js.Value) any {
 		base64.RawStdEncoding.EncodeToString(partnerPubKeyBytes)[:8],
 		partnerToken,
 		base64.RawStdEncoding.EncodeToString(replyID),
-		message[:10])
+		truncate(message, 10))
 
 	promiseFn := func(resolve, reject func(args ...any) js.Value) {
 		sendReport, err := dmc.api.SendReaction(partnerPubKeyBytes,
@@ -951,3 +951,12 @@ func (c *DMDbCipher) UnmarshalJSON(_ js.Value, args []js.Value) any {
 	}
 	return nil
 }
+
+// truncate truncates the string to length n. If the string is trimmed, then
+// ellipses (...) are appended.
+func truncate(s string, n int) string {
+	if len(s)-3 <= n {
+		return s
+	}
+	return s[:n] + "..."
+}
\ No newline at end of file
-- 
GitLab