From aa0fe2ed72a6a7d81081e72f736bf1befd807619 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 23 Dec 2023 10:30:44 -0500 Subject: [PATCH] Nullify `DMApiParameters` --- .../Components/InstanceManager.cs | 16 +++++++++++++--- .../Components/Interop/DMApiParameters.cs | 4 +--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/InstanceManager.cs b/src/Tgstation.Server.Host/Components/InstanceManager.cs index eeadde0c30..cc0dd09972 100644 --- a/src/Tgstation.Server.Host/Components/InstanceManager.cs +++ b/src/Tgstation.Server.Host/Components/InstanceManager.cs @@ -510,6 +510,13 @@ namespace Tgstation.Server.Host.Components { ArgumentNullException.ThrowIfNull(parameters); + var accessIdentifier = parameters.AccessIdentifier; + if (accessIdentifier == null) + { + logger.LogWarning("Received invalid bridge request with null access identifier!"); + return null; + } + IBridgeHandler? bridgeHandler = null; for (var i = 0; bridgeHandler == null && i < 30; ++i) { @@ -517,7 +524,7 @@ namespace Tgstation.Server.Host.Components // This is a stopgap Task delayTask = Task.CompletedTask; lock (bridgeHandlers) - if (!bridgeHandlers.TryGetValue(parameters.AccessIdentifier, out bridgeHandler)) + if (!bridgeHandlers.TryGetValue(accessIdentifier, out bridgeHandler)) delayTask = asyncDelayer.Delay(TimeSpan.FromMilliseconds(100), cancellationToken); await delayTask; @@ -525,9 +532,9 @@ namespace Tgstation.Server.Host.Components if (bridgeHandler == null) lock (bridgeHandlers) - if (!bridgeHandlers.TryGetValue(parameters.AccessIdentifier, out bridgeHandler)) + if (!bridgeHandlers.TryGetValue(accessIdentifier, out bridgeHandler)) { - logger.LogWarning("Received invalid bridge request with access identifier: {accessIdentifier}", parameters.AccessIdentifier); + logger.LogWarning("Received invalid bridge request with access identifier: {accessIdentifier}", accessIdentifier); return null; } @@ -540,6 +547,9 @@ namespace Tgstation.Server.Host.Components ArgumentNullException.ThrowIfNull(bridgeHandler); var accessIdentifier = bridgeHandler.DMApiParameters.AccessIdentifier; + if (accessIdentifier == null) + throw new InvalidOperationException("Attempted bridge registration with null AccessIdentifier!"); + lock (bridgeHandlers) { bridgeHandlers.Add(accessIdentifier, bridgeHandler); diff --git a/src/Tgstation.Server.Host/Components/Interop/DMApiParameters.cs b/src/Tgstation.Server.Host/Components/Interop/DMApiParameters.cs index 55954dd38d..2a31c9efbc 100644 --- a/src/Tgstation.Server.Host/Components/Interop/DMApiParameters.cs +++ b/src/Tgstation.Server.Host/Components/Interop/DMApiParameters.cs @@ -1,7 +1,5 @@ using System.ComponentModel.DataAnnotations; -#nullable disable - namespace Tgstation.Server.Host.Components.Interop { /// @@ -13,6 +11,6 @@ namespace Tgstation.Server.Host.Components.Interop /// Used to identify and authenticate the DreamDaemon instance. /// [Required] - public string AccessIdentifier { get; set; } + public string? AccessIdentifier { get; set; } } }