Fix crash issue on PartialUninstall 86/117686/1 accepted/tizen/3.0/common/20170309.110520 accepted/tizen/3.0/ivi/20170309.085818 accepted/tizen/3.0/mobile/20170309.085604 accepted/tizen/3.0/tv/20170309.085703 accepted/tizen/3.0/wearable/20170309.085751 submit/tizen_3.0/20170309.043057
authorSangyoon Jang <s89.jang@samsung.com>
Tue, 7 Mar 2017 05:58:00 +0000 (14:58 +0900)
committerjongmyeong ko <jongmyeong.ko@samsung.com>
Tue, 7 Mar 2017 06:18:33 +0000 (22:18 -0800)
PkgmgrGenerateManifestInfoFromDB generates manifest_x structure not
completely when manifest file not found.

Change-Id: I8e0a0c2a3839e45a088b360085376fae1d1c1f91
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
(cherry picked from commit d08418bc67511fb04a017d0d75b3a8eadc1336b7)

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;