Author: gert
Date: 2006-10-22 09:58:05 -0400 (Sun, 22 Oct 2006)
New Revision: 66879

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/assembly.c
Log:
* assembly.c: build_assembly_name should not consider a version
number without build or revision number invalid. Fixes bug #79715.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2006-10-22 13:49:41 UTC (rev 66878)
+++ trunk/mono/mono/metadata/ChangeLog  2006-10-22 13:58:05 UTC (rev 66879)
@@ -1,3 +1,8 @@
+2006-10-22  Gert Driesen  <[EMAIL PROTECTED]>
+
+       * assembly.c: build_assembly_name should not consider a version
+       number without build or revision number invalid. Fixes bug #79715.
+
 2006-10-18  Jonathan Chambers  <[EMAIL PROTECTED]>
 
        * icall.c: Have 
ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString

Modified: trunk/mono/mono/metadata/assembly.c
===================================================================
--- trunk/mono/mono/metadata/assembly.c 2006-10-22 13:49:41 UTC (rev 66878)
+++ trunk/mono/mono/metadata/assembly.c 2006-10-22 13:58:05 UTC (rev 66879)
@@ -1587,18 +1587,29 @@
 {
        gint major, minor, build, revision;
        gint len;
+       gint version_parts;
        gchar *pkey, *pkeyptr, *encoded, tok [8];
 
        memset (aname, 0, sizeof (MonoAssemblyName));
 
        if (version) {
-               if (sscanf (version, "%u.%u.%u.%u", &major, &minor, &build, 
&revision) != 4)
+               version_parts = sscanf (version, "%u.%u.%u.%u", &major, &minor, 
&build, &revision);
+               if (version_parts < 2 || version_parts > 4)
                        return FALSE;
 
+               /* FIXME: we should set build & revision to -1 (instead of 0)
+               if these are not set in the version string. That way, later on,
+               we can still determine if these were specified. */
                aname->major = major;
                aname->minor = minor;
-               aname->build = build;
-               aname->revision = revision;
+               if (version_parts >= 3)
+                       aname->build = build;
+               else
+                       aname->build = 0;
+               if (version_parts == 4)
+                       aname->revision = revision;
+               else
+                       aname->revision = 0;
        }
        
        aname->name = g_strdup (name);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to