Sanitize Chat
This commit is contained in:
parent
615a3a28a0
commit
7b6fa15893
@ -1,4 +1,5 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
#include <cstring>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
@ -10,6 +11,11 @@
|
|||||||
|
|
||||||
#include "chat.h"
|
#include "chat.h"
|
||||||
|
|
||||||
|
// Message Limitations
|
||||||
|
#define MAX_MESSAGE_LENGTH 512
|
||||||
|
#define MINIMUM_MESSAGE_CHARACTER 32
|
||||||
|
#define MAXIMUM_MESSAGE_CHARACTER 126
|
||||||
|
|
||||||
// Send API Command
|
// Send API Command
|
||||||
static void send_api_command(unsigned char *minecraft, char *str) {
|
static void send_api_command(unsigned char *minecraft, char *str) {
|
||||||
struct ConnectedClient client;
|
struct ConnectedClient client;
|
||||||
@ -30,11 +36,29 @@ static void send_api_chat_command(unsigned char *minecraft, char *str) {
|
|||||||
free(command);
|
free(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sanitize Message
|
||||||
|
static void sanitize_message(char **message) {
|
||||||
|
// Store Message Length
|
||||||
|
int length = strlen(*message);
|
||||||
|
// Truncate Message
|
||||||
|
if (length > MAX_MESSAGE_LENGTH) {
|
||||||
|
(*message)[MAX_MESSAGE_LENGTH] = '\0';
|
||||||
|
length = MAX_MESSAGE_LENGTH;
|
||||||
|
}
|
||||||
|
// Loop Through Message
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
if ((*message)[i] < MINIMUM_MESSAGE_CHARACTER || (*message)[i] > MAXIMUM_MESSAGE_CHARACTER) {
|
||||||
|
// Replace Illegal Character
|
||||||
|
(*message)[i] = '?';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Send Message To Players
|
// Send Message To Players
|
||||||
static void send_message(unsigned char *server_side_network_handler, char *username, char *message) {
|
static void send_message(unsigned char *server_side_network_handler, char *username, char *message) {
|
||||||
char *full_message = NULL;
|
char *full_message = NULL;
|
||||||
asprintf(&full_message, "<%s> %s", username, message);
|
asprintf(&full_message, "<%s> %s", username, message);
|
||||||
ALLOC_CHECK(full_message);
|
ALLOC_CHECK(full_message);
|
||||||
|
sanitize_message(&full_message);
|
||||||
(*ServerSideNetworkHandler_displayGameMessage)(server_side_network_handler, std::string(full_message));
|
(*ServerSideNetworkHandler_displayGameMessage)(server_side_network_handler, std::string(full_message));
|
||||||
free(full_message);
|
free(full_message);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user