[Mono-bugs] [Bug 562009] [verifier] SIGSEGV in mono_method_signature on a bad assembly

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Apr 15 10:18:07 EDT 2010


http://bugzilla.novell.com/show_bug.cgi?id=562009

http://bugzilla.novell.com/show_bug.cgi?id=562009#c3


--- Comment #3 from Sebastien Pouliot <spouliot at novell.com> 2010-04-15 14:18:07 UTC ---
This fix the crash for the attached assembly. However it does not deal the NULL
entries in the method list (which would likely lead to later crashes).

Index: metadata/loader.c
===================================================================
--- metadata/loader.c    (revision 155309)
+++ metadata/loader.c    (working copy)
@@ -598,9 +598,11 @@
                 continue;

             method = mono_get_method (klass->image, MONO_TOKEN_METHOD_DEF |
(klass->method.first + i + 1), klass);
-            other_sig = mono_method_signature (method);
-            if (method && other_sig && (sig->call_convention !=
MONO_CALL_VARARG) && mono_metadata_signature_equal (sig, other_sig))
-                return method;
+            if (method) {
+                other_sig = mono_method_signature (method);
+                if (other_sig && (sig->call_convention != MONO_CALL_VARARG) &&
mono_metadata_signature_equal (sig, other_sig))
+                    return method;
+            }
         }
     }

@@ -616,7 +618,7 @@
         MonoMethod *m = klass->methods [i];
         MonoMethodSignature *msig;

-        if (!((fqname && !strcmp (m->name, fqname)) ||
+        if (!m || !((fqname && !strcmp (m->name, fqname)) ||
               (qname && !strcmp (m->name, qname)) ||
               (name && !strcmp (m->name, name))))
             continue;

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list