From 76d0a486c87ed0e0c09b680ecadde42dd2706032 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 6 Feb 2015 02:57:13 +0000 Subject: [PATCH] Convert SpamSum C-string output to C# string, that is, removing trailing NILs --- SharpHash/Checksums/SpamSumContext.cs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/SharpHash/Checksums/SpamSumContext.cs b/SharpHash/Checksums/SpamSumContext.cs index 1fc045c..9cfa981 100644 --- a/SharpHash/Checksums/SpamSumContext.cs +++ b/SharpHash/Checksums/SpamSumContext.cs @@ -442,7 +442,7 @@ namespace SharpHash.Checksums byte[] result; fuzzy_digest(out result); - return Encoding.ASCII.GetString(result); + return CToString(result); } /// @@ -483,7 +483,7 @@ namespace SharpHash.Checksums byte[] result; fuzzy_digest(out result); - return Encoding.ASCII.GetString(result); + return CToString(result); } /// @@ -495,6 +495,22 @@ namespace SharpHash.Checksums { return Data(data, (uint)data.Length, out hash); } + + // Converts an ASCII null-terminated string to .NET string + private string CToString(byte[] CString) + { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < CString.Length; i++) + { + if (CString[i] == 0) + break; + + sb.Append(Encoding.ASCII.GetString(CString, i, 1)); + } + + return sb.ToString(); + } } }