From afc800274caaecf3647db2f04cd0635285eb675b Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Thu, 20 Jun 2024 20:17:16 -0400 Subject: [PATCH] Fix null exceptions in SurveillanceCameraMonitorSystem (#29275) * Add IsNullOrEmpty checks before indexing KnownSubnets * actor --- .../Systems/SurveillanceCameraMonitorSystem.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs index ca0f59cd14..f61c57a4a6 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs @@ -90,7 +90,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem private void OnSubnetRequest(EntityUid uid, SurveillanceCameraMonitorComponent component, SurveillanceCameraMonitorSubnetRequestMessage args) { - if (args.Actor != null) + if (args.Actor is { Valid: true } actor && !Deleted(actor)) { SetActiveSubnet(uid, args.Subnet, component); } @@ -146,6 +146,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem break; case SurveillanceCameraSystem.CameraSubnetData: if (args.Data.TryGetValue(SurveillanceCameraSystem.CameraSubnetData, out string? subnet) + && !string.IsNullOrEmpty(subnet) && !component.KnownSubnets.ContainsKey(subnet)) { component.KnownSubnets.Add(subnet, args.SenderAddress); @@ -217,6 +218,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem { if (!Resolve(uid, ref monitor) || monitor.LastHeartbeatSent < _heartbeatDelay + || string.IsNullOrEmpty(monitor.ActiveSubnet) || !monitor.KnownSubnets.TryGetValue(monitor.ActiveSubnet, out var subnetAddress)) { return; @@ -278,6 +280,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem SurveillanceCameraMonitorComponent? monitor = null) { if (!Resolve(uid, ref monitor) + || string.IsNullOrEmpty(subnet) || !monitor.KnownSubnets.ContainsKey(subnet)) { return; @@ -295,6 +298,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem private void RequestActiveSubnetInfo(EntityUid uid, SurveillanceCameraMonitorComponent? monitor = null) { if (!Resolve(uid, ref monitor) + || string.IsNullOrEmpty(monitor.ActiveSubnet) || !monitor.KnownSubnets.TryGetValue(monitor.ActiveSubnet, out var address)) { return; @@ -310,6 +314,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem private void ConnectToSubnet(EntityUid uid, string subnet, SurveillanceCameraMonitorComponent? monitor = null) { if (!Resolve(uid, ref monitor) + || string.IsNullOrEmpty(subnet) || !monitor.KnownSubnets.TryGetValue(subnet, out var address)) { return; @@ -327,6 +332,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem private void DisconnectFromSubnet(EntityUid uid, string subnet, SurveillanceCameraMonitorComponent? monitor = null) { if (!Resolve(uid, ref monitor) + || string.IsNullOrEmpty(subnet) || !monitor.KnownSubnets.TryGetValue(subnet, out var address)) { return; @@ -415,6 +421,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem SurveillanceCameraMonitorComponent? monitor = null) { if (!Resolve(uid, ref monitor) + || string.IsNullOrEmpty(monitor.ActiveSubnet) || !monitor.KnownSubnets.TryGetValue(monitor.ActiveSubnet, out var subnetAddress)) { return; -- 2.51.2