Fix resource leak in case of error, fix strncpy usage
[framework/web/wrt-installer.git] / src / pkg-manager / backendlib.cpp
index 639df95..27af8cb 100644 (file)
@@ -98,10 +98,6 @@ static int pkg_plugin_get_installed_apps_list(const char * /*category*/,
         package_manager_pkg_info_t *pkg_info =
             static_cast<package_manager_pkg_info_t*>
             (malloc(sizeof(package_manager_pkg_info_t)));
-        if (NULL == pkg_info) {
-            LogError("Error in malloc");
-            return FALSE;
-        }
 
         if (NULL == pkg_list) {
             pkg_list = pkg_info;
@@ -120,7 +116,7 @@ static int pkg_plugin_get_installed_apps_list(const char * /*category*/,
         if (!version.IsNull()) {
             strncpy(pkg_info->version,
                     DPL::ToUTF8String(*version).c_str(),
-                    PKG_VERSION_STRING_LEN_MAX);
+                    PKG_VERSION_STRING_LEN_MAX - 1);
         }
 
         (*count)++;
@@ -150,7 +146,7 @@ static int pkg_plugin_get_app_detail_info(const char *pkg_name,
     if (!version.IsNull()) {
         strncpy(pkg_detail_info->version,
                 DPL::ToUTF8String(*version).c_str(),
-                PKG_VERSION_STRING_LEN_MAX);
+                PKG_VERSION_STRING_LEN_MAX - 1);
     }
     snprintf(pkg_detail_info->optional_id, PKG_NAME_STRING_LEN_MAX, "%d",
            handle);
@@ -168,10 +164,10 @@ static int pkg_plugin_get_app_detail_info(const char *pkg_name,
     if (!desc.IsNull()) {
         strncpy(pkg_detail_info->pkg_description,
                 DPL::ToUTF8String(*desc).c_str(),
-                PKG_VALUE_STRING_LEN_MAX);
+                PKG_VALUE_STRING_LEN_MAX - 1);
     }
     strncpy(pkg_detail_info->pkg_type, "wgt", PKG_TYPE_STRING_LEN_MAX);
-    strncpy(pkg_detail_info->pkg_name, pkg_name, PKG_NAME_STRING_LEN_MAX);
+    strncpy(pkg_detail_info->pkg_name, pkg_name, PKG_NAME_STRING_LEN_MAX - 1);
 
     /* set installed time */
     pkg_detail_info->installed_time = widget.getInstallTime();