Fix crash issue on PartialUninstall 81/117681/3
authorSangyoon Jang <s89.jang@samsung.com>
Tue, 7 Mar 2017 05:58:00 +0000 (14:58 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Tue, 7 Mar 2017 06:05:28 +0000 (15:05 +0900)
PkgmgrGenerateManifestInfoFromDB generates manifest_x structure not
completely when manifest file not found.

Change-Id: I8e0a0c2a3839e45a088b360085376fae1d1c1f91
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
src/common/utils/manifest_util.cc

index 0b6e9a9..a5591f7 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "common/utils/manifest_util.h"
 
+#include <manifest_parser/utils/logging.h>
 #include <pkgmgr/pkgmgr_parser.h>
 #include <pkgmgr-info.h>
 #include <tzplatform_config.h>
@@ -31,32 +32,29 @@ int PkgmgrAppInfoCallback(const pkgmgrinfo_appinfo_h handle,
     return PMINFO_R_ERROR;
   }
 
-  icon_x* icon = static_cast<icon_x*>(calloc(1, sizeof(icon_x)));
-  if (!icon) {
-    free(application);
-    return PMINFO_R_ERROR;
-  }
-
   char* icon_text = nullptr;
-  if (pkgmgrinfo_appinfo_get_icon(handle, &icon_text)) {
-    free(application);
-    free(icon);
-    return PMINFO_R_ERROR;
-  }
+  if (pkgmgrinfo_appinfo_get_icon(handle, &icon_text))
+    LOG(INFO) << "No Icon for " << app_id;
 
   if (!mfx->root_path) {
     char *root_path = nullptr;
     if (pkgmgrinfo_appinfo_get_root_path(handle, &root_path)) {
       free(application);
-      free(icon);
       return PMINFO_R_ERROR;
     }
     mfx->root_path = strdup(root_path);
   }
 
   application->appid = strdup(app_id);
-  icon->text = strdup(icon_text);
-  application->icon = g_list_append(application->icon, icon);
+  if (icon_text) {
+    icon_x* icon = static_cast<icon_x*>(calloc(1, sizeof(icon_x)));
+    if (!icon) {
+      free(application);
+      return PMINFO_R_ERROR;
+    }
+    icon->text = strdup(icon_text);
+    application->icon = g_list_append(application->icon, icon);
+  }
   mfx->application = g_list_append(mfx->application, application);
 
   return PMINFO_R_OK;