Browse Source

Fix potential NullReferenceException in UniversalAssemblyResolver

pull/2423/head
Daniel Grunwald 4 years ago
parent
commit
715968e02a
  1. 23
      ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

23
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

@ -483,19 +483,17 @@ namespace ICSharpCode.Decompiler.Metadata @@ -483,19 +483,17 @@ namespace ICSharpCode.Decompiler.Metadata
if (reference.PublicKeyToken == null)
return null;
if (version == null)
return null;
string? path;
if (decompilerRuntime == DecompilerRuntime.Mono)
{
path = GetMonoMscorlibBasePath(version);
}
else if (version != null)
{
path = GetMscorlibBasePath(version, reference.PublicKeyToken.ToHexString(8));
}
else
{
path = null;
path = GetMscorlibBasePath(version, reference.PublicKeyToken.ToHexString(8));
}
if (path == null)
@ -565,7 +563,7 @@ namespace ICSharpCode.Decompiler.Metadata @@ -565,7 +563,7 @@ namespace ICSharpCode.Decompiler.Metadata
return null;
}
string? GetMonoMscorlibBasePath(Version? version)
string? GetMonoMscorlibBasePath(Version version)
{
var path = Directory.GetParent(typeof(object).Module.FullyQualifiedName).Parent.FullName;
if (version.Major == 1)
@ -683,12 +681,13 @@ namespace ICSharpCode.Decompiler.Metadata @@ -683,12 +681,13 @@ namespace ICSharpCode.Decompiler.Metadata
{
var gac_folder = new StringBuilder()
.Append(prefix)
.Append(reference.Version)
.Append("__");
for (int i = 0; i < reference.PublicKeyToken.Length; i++)
gac_folder.Append(reference.PublicKeyToken[i].ToString("x2"));
.Append(reference.Version);
if (reference.PublicKeyToken != null)
{
gac_folder.Append("__");
for (int i = 0; i < reference.PublicKeyToken.Length; i++)
gac_folder.Append(reference.PublicKeyToken[i].ToString("x2"));
}
return Path.Combine(
Path.Combine(
Path.Combine(gac, reference.Name), gac_folder.ToString()),

Loading…
Cancel
Save