X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fimage.c;h=7b1b4278315a2eddd8463dd5b6e86039efa3ed65;hb=0fa33056a6742b2ee02604596b355d661d9bdc41;hp=c99de7aa04f344b980db02069a46a38a274f5bfc;hpb=a341404ecdd3b5ca2ed0ab1e9a5bcb9b5ccd2566;p=mono.git diff --git a/mono/metadata/image.c b/mono/metadata/image.c index c99de7aa04f..7b1b4278315 100644 --- a/mono/metadata/image.c +++ b/mono/metadata/image.c @@ -9,6 +9,7 @@ * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) * Copyright 2004-2009 Novell, Inc (http://www.novell.com) * + * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include #include @@ -509,9 +510,19 @@ load_metadata_ptrs (MonoImage *image, MonoCLIImageInfo *iinfo) i = ((MonoImageLoader*)image->loader)->load_tables (image); g_assert (image->heap_guid.data); - g_assert (image->heap_guid.size >= 16); - image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data); + if (!image->metadata_only) { + g_assert (image->heap_guid.size >= 16); + + image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data); + } else { + /* PPDB files have no guid */ + guint8 empty_guid [16]; + + memset (empty_guid, 0, sizeof (empty_guid)); + + image->guid = mono_guid_to_string (empty_guid); + } return i; } @@ -1070,13 +1081,13 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status, goto done; } - if (image->loader == &pe_loader && !mono_verifier_verify_cli_data (image, &errors)) + if (image->loader == &pe_loader && !image->metadata_only && !mono_verifier_verify_cli_data (image, &errors)) goto invalid_image; if (!mono_image_load_cli_data (image)) goto invalid_image; - if (image->loader == &pe_loader && !mono_verifier_verify_table_data (image, &errors)) + if (image->loader == &pe_loader && !image->metadata_only && !mono_verifier_verify_table_data (image, &errors)) goto invalid_image; mono_image_load_names (image);