Author: jbevain
Date: 2007-09-12 08:26:21 -0400 (Wed, 12 Sep 2007)
New Revision: 85679
Modified:
trunk/mcs/class/Mono.Cecil/ChangeLog
trunk/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs
Log:
2007-09-12 Jb Evain <[EMAIL PROTECTED]>
* Mono.Cecil.Binary/ImageReader.cs: some 64bits assemblies
have a strange header without import tables.
Modified: trunk/mcs/class/Mono.Cecil/ChangeLog
===================================================================
--- trunk/mcs/class/Mono.Cecil/ChangeLog 2007-09-12 11:44:19 UTC (rev
85678)
+++ trunk/mcs/class/Mono.Cecil/ChangeLog 2007-09-12 12:26:21 UTC (rev
85679)
@@ -1,3 +1,8 @@
+2007-09-12 Jb Evain <[EMAIL PROTECTED]>
+
+ * Mono.Cecil.Binary/ImageReader.cs: some 64bits assemblies
+ have a strange header without import tables.
+
2007-09-09 Jb Evain <[EMAIL PROTECTED]>
* Mono.Cecil/GenericContext.cs
Modified: trunk/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs
===================================================================
--- trunk/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs 2007-09-12
11:44:19 UTC (rev 85678)
+++ trunk/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs 2007-09-12
12:26:21 UTC (rev 85679)
@@ -262,6 +262,9 @@
public override void VisitImportAddressTable
(ImportAddressTable iat)
{
+ if
(m_image.PEOptionalHeader.DataDirectories.IAT.VirtualAddress == RVA.Zero)
+ return;
+
SetPositionToAddress
(m_image.PEOptionalHeader.DataDirectories.IAT.VirtualAddress);
iat.HintNameTableRVA = ReadRVA ();
@@ -339,6 +342,9 @@
public override void VisitImportTable (ImportTable it)
{
+ if
(m_image.PEOptionalHeader.DataDirectories.ImportTable.VirtualAddress ==
RVA.Zero)
+ return;
+
SetPositionToAddress
(m_image.PEOptionalHeader.DataDirectories.ImportTable.VirtualAddress);
it.ImportLookupTable = ReadRVA ();
@@ -350,13 +356,19 @@
public override void VisitImportLookupTable (ImportLookupTable
ilt)
{
- SetPositionToAddress
(m_image.ImportTable.ImportLookupTable.Value);
+ if (m_image.ImportTable.ImportLookupTable == RVA.Zero)
+ return;
+ SetPositionToAddress
(m_image.ImportTable.ImportLookupTable);
+
ilt.HintNameRVA = ReadRVA ();
}
public override void VisitHintNameTable (HintNameTable hnt)
{
+ if (m_image.ImportAddressTable.HintNameTableRVA ==
RVA.Zero)
+ return;
+
SetPositionToAddress
(m_image.ImportAddressTable.HintNameTableRVA);
hnt.Hint = m_binaryReader.ReadUInt16 ();
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches