From eeb618e0761ff5c183abcc1f86f0a12340f4fc80 Mon Sep 17 00:00:00 2001 From: andrew Date: Wed, 8 Aug 2012 12:37:02 +0100 Subject: [PATCH] 7189533: GetJavaProperties should free temporary file if subsequent allocations fails Summary: Add missing calls to free Reviewed-by: alanb, dholmes, sherman --- src/solaris/native/java/lang/java_props_md.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/solaris/native/java/lang/java_props_md.c b/src/solaris/native/java/lang/java_props_md.c index 4a57b72dd..c2bc9c1c8 100644 --- a/src/solaris/native/java/lang/java_props_md.c +++ b/src/solaris/native/java/lang/java_props_md.c @@ -140,7 +140,7 @@ static int ParseLocale(JNIEnv* env, int cat, char ** std_language, char ** std_s char *temp = NULL; char *language = NULL, *country = NULL, *variant = NULL, *encoding = NULL; - char *p, *encoding_variant; + char *p, *encoding_variant, *old_temp, *old_ev; char *lc; /* Query the locale set for the category */ @@ -219,6 +219,7 @@ static int ParseLocale(JNIEnv* env, int cat, char ** std_language, char ** std_s encoding_variant = malloc(strlen(temp)+1); if (encoding_variant == NULL) { + free(temp); JNU_ThrowOutOfMemoryError(env, NULL); return 0; } @@ -234,14 +235,20 @@ static int ParseLocale(JNIEnv* env, int cat, char ** std_language, char ** std_s } if (mapLookup(locale_aliases, temp, &p)) { + old_temp = temp; temp = realloc(temp, strlen(p)+1); if (temp == NULL) { + free(old_temp); + free(encoding_variant); JNU_ThrowOutOfMemoryError(env, NULL); return 0; } strcpy(temp, p); + old_ev = encoding_variant; encoding_variant = realloc(encoding_variant, strlen(temp)+1); if (encoding_variant == NULL) { + free(old_ev); + free(temp); JNU_ThrowOutOfMemoryError(env, NULL); return 0; } -- GitLab