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

Reply via email to