From 04a6c2c987211da40f65b843ba9fd777d369d88b Mon Sep 17 00:00:00 2001 From: Rodrigo Kumpera Date: Thu, 17 Aug 2017 11:33:37 -0700 Subject: [PATCH] [runtime] Don't set pkey to a value that will be freed immediately after. --- mono/metadata/assembly.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mono/metadata/assembly.c b/mono/metadata/assembly.c index 6f1de9964a3..684a401c959 100644 --- a/mono/metadata/assembly.c +++ b/mono/metadata/assembly.c @@ -2382,7 +2382,7 @@ parse_public_key (const gchar *key, gchar** pubkey, gboolean *is_ecma) /* allow the ECMA standard key */ if (strcmp (key, "00000000000000000400000000000000") == 0) { - *pubkey = g_strdup (key); + *pubkey = NULL; *is_ecma = TRUE; return TRUE; } @@ -2450,7 +2450,7 @@ build_assembly_name (const char *name, const char *version, const char *culture, gint major, minor, build, revision; gint len; gint version_parts; - gchar *pkey, *pkeyptr, *encoded, tok [8]; + gchar *pkeyptr, *encoded, tok [8]; memset (aname, 0, sizeof (MonoAssemblyName)); @@ -2499,15 +2499,16 @@ build_assembly_name (const char *name, const char *version, const char *culture, } if (key) { - gboolean is_ecma; + gboolean is_ecma = FALSE; + gchar *pkey = NULL; if (strcmp (key, "null") == 0 || !parse_public_key (key, &pkey, &is_ecma)) { mono_assembly_name_free (aname); return FALSE; } if (is_ecma) { + g_assert (pkey == NULL); aname->public_key = NULL; - g_free (pkey); g_strlcpy ((gchar*)aname->public_key_token, "b77a5c561934e089", MONO_PUBLIC_KEY_TOKEN_LENGTH); return TRUE; } -- 2.25.1