Modified source code to memory safe when return. 87/101287/7
authorjinwang.an <jinwang.an@samsung.com>
Wed, 30 Nov 2016 13:53:36 +0000 (22:53 +0900)
committerjinwang.an <jinwang.an@samsung.com>
Wed, 7 Dec 2016 02:19:20 +0000 (11:19 +0900)
Change-Id: Ic6abd0903315b504ad9f9df668c3864f2dd7be1d
Signed-off-by: jinwang.an <jinwang.an@samsung.com>
system-settings-util/src/system_settings_util.c

index eb53eda..3e9c331 100644 (file)
@@ -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;
 }