From e4e2550592856054e1144a972a95d036d5694120 Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 14 Jun 2022 21:42:41 +0100 Subject: [PATCH] Enforce MAX_REASONLENGTH when reading ban.txt. --- src/d_clisrv.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 8dc388350..0281e97b4 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2179,9 +2179,9 @@ static void Command_ClearBans(void) void D_LoadBan(boolean warning) { FILE *f; - size_t i; - const char *address, *mask; - const char *username, *reason; + size_t i, j; + char *address, *mask; + char *username, *reason; time_t unbanTime = NO_BAN_TIME; char buffer[MAX_WADPATH]; boolean banmode = 0; @@ -2235,6 +2235,19 @@ void D_LoadBan(boolean warning) reason = strtok(NULL, "\"\r\n"); // go until next " } + // Enforce MAX_REASONLENGTH. + if (reason) + { + j = 0; + while (reason[j] != '\0') + { + if ((j++) < MAX_REASONLENGTH) + continue; + reason[j] = '\0'; + break; + } + } + I_SetBanAddress(address, mask); if (I_SetUnbanTime)