Fix calling iniparser_getseckeys() 04/223004/6
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 22 Jan 2020 05:24:38 +0000 (14:24 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 22 Jan 2020 05:54:29 +0000 (14:54 +0900)
The parameter of iniparser_getseckeys() is changed.

Change-Id: Iaa7aa83d42c28403ab8e15cbc69d011352dfd89d
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/widget_service.c

index 5c13fca..c0cd85e 100644 (file)
@@ -608,7 +608,28 @@ static int _resolution_update_from_file(void)
        snprintf(key_format, sizeof(key_format), "%s:%s",
                        RESOLUTION_SECTION_NAME, RESOLUTION_FORMAT);
        key_num = iniparser_getsecnkeys(dic, RESOLUTION_SECTION_NAME);
-       key_list = iniparser_getseckeys(dic, RESOLUTION_SECTION_NAME);
+       if (key_num == 0) {
+               _E("key_num is zero");
+               iniparser_freedict(dic);
+               return WIDGET_ERROR_NONE;
+
+       }
+
+       key_list = calloc(key_num, sizeof(char *));
+       if (key_list == NULL) {
+               _E("Out of memory");
+               iniparser_freedict(dic);
+               return WIDGET_ERROR_OUT_OF_MEMORY;
+       }
+
+       if (!iniparser_getseckeys(dic, RESOLUTION_SECTION_NAME,
+                       (const char **)key_list)) {
+               _E("Failed to get section keys");
+               free(key_list);
+               iniparser_freedict(dic);
+               return WIDGET_ERROR_IO_ERROR;
+       }
+
        for (i = 0; i < key_num; i++) {
                type_str = key_list[i];
                size_str = iniparser_getstring(dic, type_str, NULL);
@@ -628,8 +649,8 @@ static int _resolution_update_from_file(void)
                }
                _resolution_update_size_list(width_type, height_type, width, height);
        }
-       if (key_list)
-               free(key_list);
+
+       free(key_list);
        iniparser_freedict(dic);
 
        return WIDGET_ERROR_NONE;