From 2ef30b2290a1de051a0528ddc85f0f60025fe32f Mon Sep 17 00:00:00 2001 From: Dominion Date: Mon, 3 Apr 2023 12:27:37 -0400 Subject: [PATCH] Safer chat message parsing --- .../Components/Session/SessionController.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Tgstation.Server.Host/Components/Session/SessionController.cs b/src/Tgstation.Server.Host/Components/Session/SessionController.cs index 452c4fefec..0f76b5993f 100644 --- a/src/Tgstation.Server.Host/Components/Session/SessionController.cs +++ b/src/Tgstation.Server.Host/Components/Session/SessionController.cs @@ -316,9 +316,20 @@ namespace Tgstation.Server.Host.Components.Session if (parameters.ChatMessage.Text == null) return Error("Missing message field in chatMessage!"); + var anyFailed = false; + var parsedChannels = parameters.ChatMessage.ChannelIds.Select( + channelString => + { + anyFailed |= !UInt64.TryParse(channelString, out var channelId); + return channelId; + }); + + if (anyFailed) + return Error("Failed to parse channelIds as U64!"); + chat.QueueMessage( parameters.ChatMessage, - parameters.ChatMessage.ChannelIds.Select(UInt64.Parse)); + parsedChannels); break; case BridgeCommandType.Prime: var oldPrimeTcs = primeTcs;