From 93faf1b5bd4c09e01cf05067abcbdbb1bd2faadd Mon Sep 17 00:00:00 2001 From: Infi Date: Sun, 19 Apr 2026 21:18:47 +0200 Subject: [PATCH] - Null terminate bytes if passed to Utf8String --- ChatTwo/ChatTwo.csproj | 2 +- ChatTwo/GameFunctions/Chat.cs | 6 +++--- ChatTwo/GameFunctions/ChatBox.cs | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ChatTwo/ChatTwo.csproj b/ChatTwo/ChatTwo.csproj index d8a5719..ecd69f2 100755 --- a/ChatTwo/ChatTwo.csproj +++ b/ChatTwo/ChatTwo.csproj @@ -1,6 +1,6 @@ - 1.34.6 + 1.34.7 enable enable true diff --git a/ChatTwo/GameFunctions/Chat.cs b/ChatTwo/GameFunctions/Chat.cs index a8f442f..b5acae5 100755 --- a/ChatTwo/GameFunctions/Chat.cs +++ b/ChatTwo/GameFunctions/Chat.cs @@ -468,7 +468,7 @@ internal sealed unsafe class Chat : IDisposable internal void SendTellUsingCommandInner(byte[] message) { - var mes = Utf8String.FromSequence(message); + var mes = Utf8String.FromSequence(message.NullTerminate()); RaptureShellModule.Instance()->ExecuteCommandInner(mes, UIModule.Instance()); RaptureAtkModule.Instance()->ClearFocus(); // Clear the focus of vanilla chat that was still active @@ -486,13 +486,13 @@ internal sealed unsafe class Chat : IDisposable } var uName = Utf8String.FromString(name); - var uMessage = Utf8String.FromSequence(message); + var uMessage = Utf8String.FromSequence(message.NullTerminate()); var encoded = Utf8String.FromUtf8String(PronounModule.Instance()->ProcessString(uMessage, true)); var decoded = EncodeMessage(rawText); AutoTranslate.ReplaceWithPayload(ref decoded); - using var decodedUtf8String = new Utf8String(decoded); + using var decodedUtf8String = new Utf8String(decoded.NullTerminate()); var logModule = RaptureLogModule.Instance(); var networkModule = Framework.Instance()->GetNetworkModuleProxy()->NetworkModule; diff --git a/ChatTwo/GameFunctions/ChatBox.cs b/ChatTwo/GameFunctions/ChatBox.cs index 86168da..5a4248e 100644 --- a/ChatTwo/GameFunctions/ChatBox.cs +++ b/ChatTwo/GameFunctions/ChatBox.cs @@ -1,4 +1,5 @@ using System.Text; +using Dalamud.Memory; using FFXIVClientStructs.FFXIV.Client.System.String; using FFXIVClientStructs.FFXIV.Client.UI; @@ -8,7 +9,7 @@ public unsafe class ChatBox { public static void SendMessageUnsafe(byte[] message) { - var mes = Utf8String.FromSequence(message); + var mes = Utf8String.FromSequence(message.NullTerminate()); UIModule.Instance()->ProcessChatBoxEntry(mes); mes->Dtor(true); }