From 639075af1efef88dcd03ed2f1aac85ecafac33e8 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 2 Oct 2022 14:08:37 -0400 Subject: [PATCH] Fix hashing on write of 0-length files --- .../IO/SynchronousIOManager.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Tgstation.Server.Host/IO/SynchronousIOManager.cs b/src/Tgstation.Server.Host/IO/SynchronousIOManager.cs index 9d474a474f..a3e04375c1 100644 --- a/src/Tgstation.Server.Host/IO/SynchronousIOManager.cs +++ b/src/Tgstation.Server.Host/IO/SynchronousIOManager.cs @@ -97,7 +97,18 @@ namespace Tgstation.Server.Host.IO // suppressed due to only using for consistency checks using (var sha1 = SHA1.Create()) { - string GetSha1(Stream dataToHash) => dataToHash != null && dataToHash.Length != 0 ? String.Join(String.Empty, sha1.ComputeHash(dataToHash).Select(b => b.ToString("x2", CultureInfo.InvariantCulture))) : null; + string GetSha1(Stream dataToHash) + { + if (dataToHash == null) + return null; + + byte[] sha1Computed = dataToHash.Length != 0 + ? sha1.ComputeHash(dataToHash) + : sha1.ComputeHash(Array.Empty()); + + return String.Join(String.Empty, sha1Computed.Select(b => b.ToString("x2", CultureInfo.InvariantCulture))); + } + var originalSha1 = GetSha1(file); if (originalSha1 != sha1InOut) {