Fix resource leak in case of error, fix strncpy usage
authorPrzemyslaw Ciezkowski <p.ciezkowski@samsung.com>
Tue, 6 Nov 2012 10:58:46 +0000 (11:58 +0100)
committerGerrit Code Review <gerrit2@kim11>
Tue, 13 Nov 2012 05:04:52 +0000 (14:04 +0900)
[Issue#] N/A
[Feature] Malloc will not return NULL on linux. Function strncpy is
called not properly.
[Cause] N/A
[Solution] Removed check if malloc was sucessful. Fix strncpy calls.
[Verification] Install any widget.

Change-Id: I3a6967c3a231b71f26b2d421a11d353e3620f400

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();