From 1c6fddc1162ebf6383ab0349fe0d34b517c6ae7f Mon Sep 17 00:00:00 2001 From: Rodrigo Kumpera Date: Thu, 15 Apr 2010 18:31:06 +0000 Subject: [PATCH] 2010-04-15 Rodrigo Kumpera * loader.c (mono_method_get_signature_full): Use new function inflate_generic_signature_checked to check for errors. Fixes #560839. svn path=/trunk/mono/; revision=155528 --- mono/metadata/ChangeLog | 7 +++++++ mono/metadata/loader.c | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index 0795fd3c56f..112d8e2862f 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,5 +1,12 @@ 2010-04-15 Rodrigo Kumpera + * loader.c (mono_method_get_signature_full): Use new function + inflate_generic_signature_checked to check for errors. + + Fixes #560839. + +2010-04-15 Rodrigo Kumpera + * loader.c (inflate_generic_signature): Add _checked variant and move this function to use it. diff --git a/mono/metadata/loader.c b/mono/metadata/loader.c index 61909bfb713..8279931397f 100644 --- a/mono/metadata/loader.c +++ b/mono/metadata/loader.c @@ -849,10 +849,17 @@ mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 to } if (context) { + MonoError error; MonoMethodSignature *cached; /* This signature is not owned by a MonoMethod, so need to cache */ - sig = inflate_generic_signature (image, sig, context); + sig = inflate_generic_signature_checked (image, sig, context, &error); + if (!mono_error_ok (&error)) {/*XXX bubble up this and kill one use of loader errors */ + mono_loader_set_error_bad_image (g_strdup_printf ("Could not inflate signature %s", mono_error_get_message (&error))); + mono_error_cleanup (&error); + return NULL; + } + cached = mono_metadata_get_inflated_signature (sig, context); if (cached != sig) mono_metadata_free_inflated_signature (sig); -- 2.11.4.GIT