From 52d39db84aa8baf5e5b1f979bcd32fad9822b3b9 Mon Sep 17 00:00:00 2001 From: Vapre Date: Tue, 2 Mar 2021 21:11:34 +0100 Subject: [PATCH] Fix possible endless loop in replay recorder while opening save file. --- OpenRA.Game/Network/ReplayRecorder.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OpenRA.Game/Network/ReplayRecorder.cs b/OpenRA.Game/Network/ReplayRecorder.cs index d56386727a..63f87f9732 100644 --- a/OpenRA.Game/Network/ReplayRecorder.cs +++ b/OpenRA.Game/Network/ReplayRecorder.cs @@ -19,6 +19,9 @@ namespace OpenRA.Network { sealed class ReplayRecorder { + // Arbitrary value. + const int CreateReplayFileMaxRetryCount = 128; + public ReplayMetadata Metadata; BinaryWriter writer; Func chooseFilename; @@ -59,7 +62,12 @@ namespace OpenRA.Network { file = File.Create(fullFilename); } - catch (IOException) { } + catch (IOException ex) + { + if (id > CreateReplayFileMaxRetryCount) + throw new ArgumentException( + "Error creating replay file \"{0}.orarep\"".F(filename), ex); + } } file.WriteArray(initialContent);