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);
}
_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;