[Mono-bugs] [Bug 580185] assembly version redirection fails to work properly
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Mon Feb 22 11:02:37 EST 2010
http://bugzilla.novell.com/show_bug.cgi?id=580185
http://bugzilla.novell.com/show_bug.cgi?id=580185#c7
Rodrigo Kumpera <rkumpera at novell.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rkumpera at novell.com
--- Comment #7 from Rodrigo Kumpera <rkumpera at novell.com> 2010-02-22 16:02:36 UTC ---
We're not sure if this is the way to implement this. But, in the mean time,
here is a review of your patch.
@@ -130,6 +130,7 @@ const MonoBundledAssembly **bundles;
/* Loaded assembly binding info */
static GSList *loaded_assembly_bindings = NULL;
+static GSList *parsed_assembly_bindings = NULL;
parsed_assembly_bindings is not a very helpful name. It takes quite some
reading of the code to figure out that it means to be the entries from parsed
domain configuration files. Please add a comment to describe that.
@@ -295,7 +296,7 @@ get_publisher_policy_info (MonoImage *image,
MonoAssemblyName *aname, MonoAssemb
/* Check that the most important elements/attributes exist */
if (!binding_info->name || !binding_info->public_key_token [0] ||
!binding_info->has_old_version_bottom ||
- !binding_info->has_new_version || !assembly_binding_maps_name
(binding_info, aname)) {
+ !binding_info->has_new_version || !assembly_binding_maps_name
(binding_info, aname)) {
White space noise.
+ if (domain && domain->setup->configuration_file) {
+ gchar *domain_config_file = mono_string_to_utf8
(domain->setup->configuration_file);
+ mono_config_parse_assembly_bindings (domain_config_file, aname->major,
aname->minor, NULL, assembly_binding_info_parsed);
+ info = get_parsed_binding_info_with_copy_to_loaded (aname);
+
+ if (info && info->name && info->public_key_token [0] &&
info->has_old_version_bottom &&
+ info->has_new_version && assembly_binding_maps_name (info, aname))
+ info->is_valid = TRUE;
+ }
This code calls get_parsed_binding_info_with_copy_to_loaded without holding the
loader lock.
The string domain_config_file is leaked.
+
+ if (!info) {
+ info = g_new0 (MonoAssemblyBindingInfo, 1);
+ info->major = aname->major;
+ info->minor = aname->minor;
+ }
+ if (!info->is_valid) {
+ ppimage = mono_assembly_load_publisher_policy (aname);
+ if (ppimage) {
+ get_publisher_policy_info (ppimage, aname, info);
+ mono_image_close (ppimage);
+ }
Can't it happen that the domain part returned an invalid binding info and this
piece of code overwrite it - which doesn't look like the expected behavior.
A major concern I have is that the whole thing is global even thou we have
per-domain configuration files.
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list