@@ -10755,6 +10755,19 @@ static void clif_msgtable_color(struct map_session_data *sd, enum clif_messages
10755
10755
clif->send(&p, sizeof(p), &sd->bl, SELF);
10756
10756
}
10757
10757
10758
+ static bool clif_validate_message(struct map_session_data *sd, char *message)
10759
+ {
10760
+ nullpo_retr(false, message);
10761
+
10762
+ if (strchr(message, '\n') != NULL ||
10763
+ strchr(message, '\r') != NULL ||
10764
+ strstr(message, " ") != NULL) {
10765
+ return false;
10766
+ }
10767
+
10768
+ return true;
10769
+ }
10770
+
10758
10771
/**
10759
10772
* Validates and processes a global/guild/party message packet.
10760
10773
*
@@ -10819,6 +10832,8 @@ static const char *clif_process_chat_message(struct map_session_data *sd, const
10819
10832
safestrncpy(out_buf, packet->message, textlen+1); // [!] packet->message is not necessarily NUL terminated
10820
10833
message = out_buf + namelen + 3;
10821
10834
10835
+ if (clif->validate_message(sd, out_buf) == false)
10836
+ return NULL;
10822
10837
if (!pc->process_chat_message(sd, message))
10823
10838
return NULL;
10824
10839
return message;
@@ -10875,6 +10890,9 @@ static bool clif_process_whisper_message(struct map_session_data *sd, const stru
10875
10890
safestrncpy(out_name, packet->name, NAME_LENGTH + 1); // [!] packet->name is not NUL terminated
10876
10891
safestrncpy(out_message, packet->message, messagelen+1); // [!] packet->message is not necessarily NUL terminated
10877
10892
10893
+ if (clif->validate_message(sd, out_message) == false)
10894
+ return false;
10895
+
10878
10896
if (!pc->process_chat_message(sd, out_message))
10879
10897
return false;
10880
10898
@@ -26883,6 +26901,7 @@ void clif_defaults(void)
26883
26901
clif->messages = clif_displaymessage_sprintf;
26884
26902
clif->process_chat_message = clif_process_chat_message;
26885
26903
clif->process_whisper_message = clif_process_whisper_message;
26904
+ clif->validate_message = clif_validate_message;
26886
26905
clif->wisexin = clif_wisexin;
26887
26906
clif->wisall = clif_wisall;
26888
26907
clif->PMIgnoreList = clif_PMIgnoreList;
0 commit comments