Hello community, here is the log from the commit of package mono-core checked in at Fri Dec 1 10:58:19 CET 2006. -------- --- mono-core/mono-core.changes 2006-11-14 16:58:51.000000000 +0100 +++ /mounts/work_src_done/STABLE/STABLE/mono-core/mono-core.changes 2006-12-01 10:53:01.000000000 +0100 @@ -1,0 +2,6 @@ +Fri Dec 1 04:50:20 CET 2006 - wberrier@suse.de + +- Thread safety fixes for rug/zmd (bnc #221277) +- System.Web Source fix (bnc #225179) + +------------------------------------------------------------------- New: ---- mono-system.web_fix_r68790.patch mono-thread_safety_r68789.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mono-core.spec ++++++ --- /var/tmp/diff_new_pack.paoCVa/_old 2006-12-01 10:58:01.000000000 +0100 +++ /var/tmp/diff_new_pack.paoCVa/_new 2006-12-01 10:58:01.000000000 +0100 @@ -17,7 +17,7 @@ Summary: A .NET Runtime Environment URL: http://go-mono.org/ Version: 1.1.18.1 -Release: 6 +Release: 11 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: mono-%{version}.tar.gz # kdepatch patch won't work with the new relocatable Mono (Miguel) @@ -26,6 +26,8 @@ Patch21: mono-monodis_cast.patch Patch25: mono-supportw.patch Patch26: mono-ppc.patch +Patch27: mono-thread_safety_r68789.patch +Patch28: mono-system.web_fix_r68790.patch ExclusiveArch: %ix86 x86_64 ppc hppa armv4l sparc s390 ia64 s390x BuildRoot: %{_tmppath}/%{name}-%{version}-build Provides: mono = %{version}-%{release} @@ -827,6 +829,8 @@ %patch21 %patch25 %patch26 +%patch27 +%patch28 %build rm -f libgc/libtool.m4 @@ -921,6 +925,9 @@ rm -rf ${RPM_BUILD_ROOT} %changelog -n mono-core +* Fri Dec 01 2006 - wberrier@suse.de +- Thread safety fixes for rug/zmd (bnc #221277) +- System.Web Source fix (bnc #225179) * Tue Nov 14 2006 - meissner@suse.de - Disable executable stack option. #65536 * Sat Oct 21 2006 - wberrier@suse.de ++++++ mono-system.web_fix_r68790.patch ++++++ Index: mcs/class/System.Web/System.Web/HttpRequest.cs =================================================================== --- mcs/class/System.Web/System.Web/HttpRequest.cs (revision 68789) +++ mcs/class/System.Web/System.Web/HttpRequest.cs (revision 68790) @@ -923,8 +923,10 @@ if (worker_request == null) return String.Empty; // don't check security with an empty string! - if (physical_path == null) - physical_path = MapPath (CurrentExecutionFilePath); + if (physical_path == null) { + // Don't call HttpRequest.MapPath here, as that one *trims* the input + physical_path = worker_request.GetFilePathTranslated (); + } if (SecurityManager.SecurityEnabled) { new FileIOPermission (FileIOPermissionAccess.PathDiscovery, physical_path).Demand (); ++++++ mono-thread_safety_r68789.patch ++++++ Index: mono/metadata/metadata.c =================================================================== --- mono/metadata/metadata.c (revision 68788) +++ mono/metadata/metadata.c (revision 68789) @@ -1490,6 +1490,7 @@ int count = 0; gboolean found; + mono_loader_lock (); /* * According to the spec, custom modifiers should come before the byref * flag, but the IL produced by ilasm from the following signature: @@ -1561,6 +1562,7 @@ if (!do_mono_metadata_parse_type (type, m, container, ptr, &ptr)) { if (type != &stype) g_free (type); + mono_loader_unlock (); return NULL; } @@ -1590,12 +1592,16 @@ LOCKING: even though we don't explicitly hold a lock, in the problematic case 'ret' is a field of a MonoClass which currently holds the loader lock. 'type' is local. */ - if (ret->data.klass == type->data.klass) + if (ret->data.klass == type->data.klass) { + mono_loader_unlock (); return ret; + } } /* No need to use locking since nobody is modifying the hash table */ - if ((cached = g_hash_table_lookup (type_cache, type))) + if ((cached = g_hash_table_lookup (type_cache, type))) { + mono_loader_unlock (); return cached; + } } /* printf ("%x %x %c %s\n", type->attrs, type->num_mods, type->pinned ? 'p' : ' ', mono_type_full_name (type)); */ @@ -1604,6 +1610,7 @@ type = mono_mempool_alloc (m->mempool, sizeof (MonoType)); memcpy (type, &stype, sizeof (MonoType)); } + mono_loader_unlock (); return type; } @@ -1716,9 +1723,11 @@ { MonoMethodSignature *sig; + mono_loader_lock (); sig = mono_mempool_alloc0 (m->mempool, sizeof (MonoMethodSignature) + ((gint32)nparams - MONO_ZERO_LEN_ARRAY) * sizeof (MonoType*)); sig->param_count = nparams; sig->sentinelpos = -1; + mono_loader_unlock (); return sig; } @@ -2389,6 +2398,7 @@ g_return_val_if_fail (ptr != NULL, NULL); + mono_loader_lock (); switch (format) { case METHOD_HEADER_TINY_FORMAT: mh = mono_mempool_alloc0 (m->mempool, sizeof (MonoMethodHeader)); @@ -2397,6 +2407,7 @@ local_var_sig_tok = 0; mh->code_size = flags >> 2; mh->code = ptr; + mono_loader_unlock (); return mh; case METHOD_HEADER_TINY_FORMAT1: mh = mono_mempool_alloc0 (m->mempool, sizeof (MonoMethodHeader)); @@ -2410,6 +2421,7 @@ */ mh->code_size = flags >> 2; mh->code = ptr; + mono_loader_unlock (); return mh; case METHOD_HEADER_FAT_FORMAT: fat_flags = read16 (ptr); @@ -2438,6 +2450,7 @@ ptr = code + code_size; break; default: + mono_loader_unlock (); return NULL; } @@ -2460,6 +2473,7 @@ mh->locals [i] = mono_metadata_parse_type_full ( m, container, MONO_PARSE_LOCAL, 0, locals_ptr, &locals_ptr); if (!mh->locals [i]) { + mono_loader_unlock (); return NULL; } } @@ -2472,6 +2486,7 @@ mh->init_locals = init_locals; if (fat_flags & METHOD_HEADER_MORE_SECTS) parse_section_data (m, mh, (const unsigned char*)ptr); + mono_loader_unlock (); return mh; } @@ -2924,7 +2939,9 @@ ++pos; } + mono_loader_lock (); result = mono_mempool_alloc0 (meta->mempool, sizeof (MonoClass*) * (pos - start)); + mono_loader_unlock (); pos = start; while (pos < tdef->rows) { Index: mono/metadata/marshal.c =================================================================== --- mono/metadata/marshal.c (revision 68788) +++ mono/metadata/marshal.c (revision 68789) @@ -1014,6 +1014,7 @@ mp = mb->method->klass->image->mempool; + mono_loader_lock (); if (mb->dynamic) { method = mb->method; @@ -1086,6 +1087,7 @@ printf ("%s\n", mono_disasm_code (&marshal_dh, method, mb->code, mb->code + mb->pos)); #endif + mono_loader_unlock (); return method; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org