static void __save_xml_value(xmlTextReaderPtr reader, char **xml_attribute)
{
- xmlTextReaderRead(reader);
- const xmlChar *attrib_val = xmlTextReaderConstValue(reader);
+ int ret;
+ const xmlChar *attrib_val;
+
+ ret = xmlTextReaderRead(reader);
+ if (ret == -1)
+ return;
+ attrib_val = xmlTextReaderConstValue(reader);
if (attrib_val)
*xml_attribute = strdup((const char *)attrib_val);
static int __ps_process_icon(xmlTextReaderPtr reader, icon_x *icon, uid_t uid)
{
+ int ret;
+ char *text;
+
__save_xml_attribute(reader, "section", &icon->section, NULL);
__save_xml_attribute(reader, "size", &icon->size, NULL);
__save_xml_attribute(reader, "resolution", &icon->resolution, NULL);
__save_xml_lang(reader, &icon->lang);
- xmlTextReaderRead(reader);
- char *text = ASCII(xmlTextReaderValue(reader));
+ ret = xmlTextReaderRead(reader);
+ if (ret == -1)
+ return 0;
+ text = ASCII(xmlTextReaderValue(reader));
if (text) {
icon->text = __get_icon_with_path(text, uid);
free(text);
snprintf(ad->mime, sizeof(ad->mime), "%s", mime);
appcontrol = calloc(1, sizeof(appcontrol_x));
+ if (appcontrol == NULL) {
+ _LOGD("Malloc Failed\n");
+ return;
+ }
if (strlen(ad->operation))
appcontrol->operation = strdup(ad->operation);
if (strlen(ad->uri))
g_list_foreach(ad->mimes, __ps_process_mime, user_data);
} else {
appcontrol = calloc(1, sizeof(appcontrol_x));
+ if (appcontrol == NULL) {
+ _LOGD("Malloc Failed\n");
+ return;
+ }
if (strlen(ad->operation))
appcontrol->operation = strdup(ad->operation);
appcontrol->uri = strdup(ad->uri);
g_list_foreach(ad->mimes, __ps_process_mime, user_data);
} else {
appcontrol = calloc(1, sizeof(appcontrol_x));
+ if (appcontrol == NULL) {
+ _LOGD("Malloc Failed\n");
+ return;
+ }
appcontrol->operation = strdup(ad->operation);
ad->appcontrols = g_list_append(ad->appcontrols, appcontrol);
}
node = xmlTextReaderConstName(reader);
if (!node) {
_LOGD("xmlTextReaderConstName value is NULL\n");
+ g_list_free_full(operations, free);
+ g_list_free_full(uris, free);
+ g_list_free_full(mimes, free);
return -1;
}
for (tag = strdup(tagv[0]); tag != NULL; ) {
ret_result = strtok_r(tag, delims, &ptr);
-
- /*check tag : preload */
- if (strcmp(ret_result, "preload") == 0) {
- ret_result = strtok_r(NULL, delims, &ptr);
- if (strcmp(ret_result, "true") == 0) {
- free((void *)mfx->preload);
- mfx->preload = strdup("true");
- } else if (strcmp(ret_result, "false") == 0) {
- free((void *)mfx->preload);
- mfx->preload = strdup("false");
- }
- /*check tag : removable*/
- } else if (strcmp(ret_result, "removable") == 0) {
- ret_result = strtok_r(NULL, delims, &ptr);
- if (strcmp(ret_result, "true") == 0) {
- free((void *)mfx->removable);
- mfx->removable = strdup("true");
- } else if (strcmp(ret_result, "false") == 0) {
- free((void *)mfx->removable);
- mfx->removable = strdup("false");
- }
- /*check tag : not matched*/
- } else
- _LOGD("tag process [%s]is not defined\n", ret_result);
-
+ if (ret_result != NULL) {
+ /*check tag : preload */
+ if (strcmp(ret_result, "preload") == 0) {
+ ret_result = strtok_r(NULL, delims, &ptr);
+ if (ret_result && strcmp(ret_result, "true") == 0) {
+ free((void *)mfx->preload);
+ mfx->preload = strdup("true");
+ } else if (ret_result && strcmp(ret_result, "false") == 0) {
+ free((void *)mfx->preload);
+ mfx->preload = strdup("false");
+ }
+ /*check tag : removable*/
+ } else if (strcmp(ret_result, "removable") == 0) {
+ ret_result = strtok_r(NULL, delims, &ptr);
+ if (ret_result && strcmp(ret_result, "true") == 0) {
+ free((void *)mfx->removable);
+ mfx->removable = strdup("true");
+ } else if (ret_result && strcmp(ret_result, "false") == 0) {
+ free((void *)mfx->removable);
+ mfx->removable = strdup("false");
+ }
+ /*check tag : not matched*/
+ } else
+ _LOGD("tag process [%s]is not defined\n", ret_result);
+ }
free(tag);
/*check next value*/
retvm_if(!lib_path, NULL, "lib_path get fail");
lib_handle = dlopen(lib_path, RTLD_LAZY);
- retvm_if(lib_handle == NULL, NULL, "dlopen is failed lib_path[%s]", lib_path);
+ if (lib_handle == NULL)
+ _LOGE("dlopen is failed lib_path[%s]", lib_path);
+
+ free(lib_path);
return lib_handle;
}
tag_exist = 0;
}
+ free(md_tag);
+
return 0;
END:
__metadata_parser_clear_dir_list(md_list);
- if (md_tag)
- free(md_tag);
+ free(md_tag);
return ret;
}
tag_exist = 0;
}
+ free(category_tag);
+
return 0;
END:
__category_parser_clear_dir_list(category_list);
- if (category_tag)
- free(category_tag);
+ free(category_tag);
return ret;
}
__ps_process_tag(mfx, tagv);
ret = pkgmgr_parser_insert_manifest_info_in_db(mfx);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+ if (ret == PMINFO_R_ERROR) {
+ _LOGE("DB Insert failed");
+ pkgmgr_parser_free_manifest_xml(mfx);
+ return PMINFO_R_ERROR;
+ }
_LOGD("DB Insert Success\n");
__ps_process_tag(mfx, tagv);
ret = pkgmgr_parser_insert_manifest_info_in_usr_db(mfx, uid);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+ if (ret == PMINFO_R_ERROR) {
+ _LOGE("DB Insert failed");
+ pkgmgr_parser_free_manifest_xml(mfx);
+ return PMINFO_R_ERROR;
+ }
_LOGD("DB Insert Success\n");
/*Delete from cert table*/
ret = pkgmgrinfo_delete_certinfo(mfx->package);
- if (ret) {
+ if (ret != PMINFO_R_OK) {
_LOGD("Cert Info DB Delete Failed\n");
- return -1;
+ pkgmgr_parser_free_manifest_xml(mfx);
+ return PMINFO_R_ERROR;
}
ret = pkgmgr_parser_update_manifest_info_in_db(mfx);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+ if (ret != PMINFO_R_OK) {
+ _LOGD("DB Insert failed\n");
+ pkgmgr_parser_free_manifest_xml(mfx);
+ return PMINFO_R_ERROR;
+ }
_LOGD("DB Update Success\n");
/*Delete from cert table*/
ret = pkgmgrinfo_delete_certinfo(mfx->package);
- if (ret) {
+ if (ret != PMINFO_R_OK) {
_LOGD("Cert Info DB Delete Failed\n");
- return -1;
+ pkgmgr_parser_free_manifest_xml(mfx);
+ return PMINFO_R_ERROR;
}
ret = pkgmgr_parser_update_manifest_info_in_usr_db(mfx, uid);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+ if (ret != PMINFO_R_OK) {
+ _LOGD("DB Insert failed\n");
+ pkgmgr_parser_free_manifest_xml(mfx);
+ return PMINFO_R_ERROR;
+ }
+
_LOGD("DB Update Success\n");
__ps_process_tag_parser(mfx, manifest, ACTION_UPGRADE);
ret = pkgmgrinfo_delete_certinfo(mfx->package);
if (ret) {
_LOGD("Cert Info DB Delete Failed\n");
+ pkgmgr_parser_free_manifest_xml(mfx);
return -1;
}
ret = pkgmgrinfo_delete_certinfo(mfx->package);
if (ret) {
_LOGD("Cert Info DB Delete Failed\n");
+ pkgmgr_parser_free_manifest_xml(mfx);
return -1;
}