aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDLL/server
diff options
context:
space:
mode:
authorp0358 <p0358@users.noreply.github.com>2023-01-06 19:00:42 +0100
committerGitHub <noreply@github.com>2023-01-06 18:00:42 +0000
commit3cfd6f96e3f459223294cbf80fa2108424aefe96 (patch)
tree63e019978c842eabaae2494ffe1b8193782a80ed /NorthstarDLL/server
parent2f4a12aee9cf39de7e0211538f480438497cca8a (diff)
downloadNorthstarLauncher-3cfd6f96e3f459223294cbf80fa2108424aefe96.tar.gz
NorthstarLauncher-3cfd6f96e3f459223294cbf80fa2108424aefe96.zip
Fix issues of restriction of chat message charset (#391)v1.12.0-rc1
Diffstat (limited to 'NorthstarDLL/server')
-rw-r--r--NorthstarDLL/server/serverchathooks.cpp28
1 files changed, 2 insertions, 26 deletions
diff --git a/NorthstarDLL/server/serverchathooks.cpp b/NorthstarDLL/server/serverchathooks.cpp
index eb0034c0..0ea3c2d2 100644
--- a/NorthstarDLL/server/serverchathooks.cpp
+++ b/NorthstarDLL/server/serverchathooks.cpp
@@ -3,6 +3,7 @@
#include "shared/exploit_fixes/ns_limits.h"
#include "squirrel/squirrel.h"
#include "server/r2server.h"
+#include "util/utils.h"
#include <rapidjson/document.h>
#include <rapidjson/stringbuffer.h>
@@ -34,38 +35,13 @@ void(__fastcall* MessageWriteByte)(int iValue);
void(__fastcall* MessageWriteString)(const char* sz);
void(__fastcall* MessageWriteBool)(bool bValue);
-static char* skip_valid_ansi_csi_sgr(char* str)
-{
- if (*str++ != '\x1B')
- return NULL;
- if (*str++ != '[') // CSI
- return NULL;
- for (char* c = str; *c; c++)
- {
- if (*c >= '0' && *c <= '9')
- continue;
- if (*c == ';')
- continue;
- if (*c == 'm') // SGR
- break;
- return NULL;
- }
- return str;
-}
-
bool bShouldCallSayTextHook = false;
// clang-format off
AUTOHOOK(_CServerGameDLL__OnReceivedSayTextMessage, server.dll + 0x1595C0,
void, __fastcall, (CServerGameDLL* self, unsigned int senderPlayerId, const char* text, bool isTeam))
// clang-format on
{
- for (char* c = const_cast<char*>(text); *c; c++)
- {
- if (*c == '\x1B' && (c = skip_valid_ansi_csi_sgr(c)))
- c--;
- else if (*c <= 9 || (*c >= 12 && *c <= 31))
- *c = ' ';
- }
+ NS::Utils::RemoveAsciiControlSequences(const_cast<char*>(text), true);
// MiniHook doesn't allow calling the base function outside of anywhere but the hook function.
// To allow bypassing the hook, isSkippingHook can be set.