From e2009f494cbcb478b80a4d2d5541e386dc974995 Mon Sep 17 00:00:00 2001 From: "jinwang.an" Date: Wed, 30 Nov 2016 22:53:36 +0900 Subject: [PATCH] Modified source code to memory safe when return. Change-Id: Ic6abd0903315b504ad9f9df668c3864f2dd7be1d Signed-off-by: jinwang.an --- system-settings-util/src/system_settings_util.c | 26 +++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/system-settings-util/src/system_settings_util.c b/system-settings-util/src/system_settings_util.c index eb53eda..3e9c331 100644 --- a/system-settings-util/src/system_settings_util.c +++ b/system-settings-util/src/system_settings_util.c @@ -70,15 +70,26 @@ char *__get_main_font_family_name_by_alias(char *alias) FcResult res = 0; font_config = FcInitLoadConfigAndFonts(); + if (font_config == NULL) + return ret; pat = FcPatternBuild(0, FC_FAMILY, FcTypeString, alias, (char *)0); + + if (pat == NULL) { + if (font_config != NULL) { + FcConfigDestroy(font_config); + font_config = NULL; + } + return ret; + } + FcConfigSubstitute(font_config, pat, FcMatchPattern); FcDefaultSubstitute(pat); /* do matching */ set = FcFontSort(font_config, pat, FcTrue, NULL, &res); - if (set && (set->nfont > 0)) { + if (set != NULL && (set->nfont > 0)) { FcPatternGetString(set->fonts[0], FC_FAMILY, 0, &family); ret = g_strdup((char *)family); @@ -86,13 +97,20 @@ char *__get_main_font_family_name_by_alias(char *alias) set = NULL; } - if (pat) { + if (set != NULL) { + FcFontSetDestroy(set); + set = NULL; + } + + if (pat != NULL) { FcPatternDestroy(pat); pat = NULL; } - FcConfigDestroy(font_config); - font_config = NULL; + if (font_config != NULL) { + FcConfigDestroy(font_config); + font_config = NULL; + } return ret; } -- 2.7.4