Skip to content

Commit 9d7314f

Browse files
committed
C#: Change random temp folder names to hash values
1 parent a25d9c7 commit 9d7314f

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -777,13 +777,7 @@ public void Dispose()
777777
/// <returns>The full path of the temp directory.</returns>
778778
private static string ComputeTempDirectoryPath(string srcDir, string subfolderName)
779779
{
780-
var bytes = Encoding.Unicode.GetBytes(srcDir);
781-
var sha = SHA1.HashData(bytes);
782-
var sb = new StringBuilder();
783-
foreach (var b in sha.Take(8))
784-
sb.AppendFormat("{0:x2}", b);
785-
786-
return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out _), sb.ToString(), subfolderName);
780+
return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out _), FileUtils.ComputeHash(srcDir), subfolderName);
787781
}
788782
}
789783
}

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorWrapper/DotnetSourceGeneratorWrapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public IEnumerable<string> RunSourceGenerator(IEnumerable<string> additionalFile
3737
{
3838
try
3939
{
40-
var name = Guid.NewGuid().ToString("N").ToUpper();
40+
var name = FileUtils.ComputeHash($"{csprojFile}{Environment.NewLine}{this.GetType().Name}");
4141
using var tempDir = new TemporaryDirectory(Path.Join(FileUtils.GetTemporaryWorkingDirectory(out _), "source-generator"), "source generator temporary", logger);
4242
var analyzerConfigPath = Path.Combine(tempDir.DirInfo.FullName, $"{name}.txt");
4343
var dllPath = Path.Combine(tempDir.DirInfo.FullName, $"{name}.dll");

csharp/extractor/Semmle.Util/FileUtils.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,24 @@ public static void TryDelete(string file)
9191
public static string ComputeFileHash(string filePath)
9292
{
9393
using var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
94-
using var shaAlg = SHA256.Create();
95-
var sha = shaAlg.ComputeHash(fileStream);
94+
var sha = SHA256.HashData(fileStream);
95+
return GetHashString(sha);
96+
}
97+
98+
public static string ComputeHash(string input)
99+
{
100+
var bytes = Encoding.Unicode.GetBytes(input);
101+
var sha = MD5.HashData(bytes); // MD5 to keep it shorter than SHA256
102+
return GetHashString(sha).ToUpper();
103+
}
104+
105+
private static string GetHashString(byte[] sha)
106+
{
96107
var hex = new StringBuilder(sha.Length * 2);
97108
foreach (var b in sha)
109+
{
98110
hex.AppendFormat("{0:x2}", b);
111+
}
99112
return hex.ToString();
100113
}
101114

0 commit comments

Comments
 (0)