Fix misusing of strncat
[platform/core/appfw/pkgmgr-server.git] / src / request.c
index f1993ca..f68a4e2 100644 (file)
@@ -290,7 +290,6 @@ static int __handle_request_install(uid_t caller_uid,
        GVariant *value;
        int i = 0;
        int len = 0;
-       size_t s = 0;
 
        g_variant_get(parameters, "(u&s&s@as)", &target_uid, &arg_pkgtype,
                        &pkgpath, &value);
@@ -309,12 +308,9 @@ static int __handle_request_install(uid_t caller_uid,
        }
 
        for (i = 0; i < args_count; i++) {
-               strncat(args, tmp_args[i], len - s - 1);
-               s += strlen(tmp_args[i]);
-               if (i != args_count - 1) {
-                       strncat(args, " ", len - s - 1);
-                       s += strlen(" ");
-               }
+               strncat(args, tmp_args[i], len - strlen(args) - 1);
+               if (i != args_count - 1)
+                       strncat(args, " ", len - strlen(args) - 1);
        }
 
        if (target_uid == (uid_t)-1 || pkgpath == NULL) {
@@ -384,7 +380,6 @@ static int __handle_request_mount_install(uid_t caller_uid,
        GVariant *value;
        int i = 0;
        int len = 0;
-       size_t s = 0;
 
        g_variant_get(parameters, "(u&s&s@as)", &target_uid, &arg_pkgtype,
                        &pkgpath, &value);
@@ -403,12 +398,9 @@ static int __handle_request_mount_install(uid_t caller_uid,
        }
 
        for (i = 0; i < args_count; i++) {
-               strncat(args, tmp_args[i], len - s - 1);
-               s += strlen(tmp_args[i]);
-               if (i != args_count - 1) {
-                       strncat(args, " ", len - s - 1);
-                       s += strlen(" ");
-               }
+               strncat(args, tmp_args[i], len - strlen(args) - 1);
+               if (i != args_count - 1)
+                       strncat(args, " ", len - strlen(args) - 1);
        }
 
        if (target_uid == (uid_t)-1 || pkgpath == NULL) {
@@ -657,22 +649,6 @@ static int __handle_request_enable_pkgs(uid_t caller_uid,
        return 0;
 }
 
-static int __convert_updateinfo_type(const char *type, pkgmgrinfo_updateinfo_update_type *converted_type)
-{
-       if (type == NULL || converted_type == NULL)
-               return -1;
-
-       if (strncmp(type, PMINFO_UPDATEINFO_TYPE_NONE, strlen(PMINFO_UPDATEINFO_TYPE_NONE)) == 0)
-               *converted_type = PMINFO_UPDATEINFO_NONE;
-       else if (strncmp(type, PMINFO_UPDATEINFO_TYPE_FORCE, strlen(PMINFO_UPDATEINFO_TYPE_FORCE)) == 0)
-               *converted_type = PMINFO_UPDATEINFO_FORCE;
-       else if (strncmp(type, PMINFO_UPDATEINFO_TYPE_OPTIONAL, strlen(PMINFO_UPDATEINFO_TYPE_OPTIONAL)) == 0)
-               *converted_type = PMINFO_UPDATEINFO_OPTIONAL;
-       else
-               return -1;
-       return 0;
-}
-
 static int __handle_request_register_pkg_update_info(
                uid_t caller_uid, GDBusMethodInvocation *invocation,
                GVariant *parameters)
@@ -724,6 +700,7 @@ static int __handle_request_register_pkg_update_info(
        if (ret != PMINFO_R_OK) {
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(i)", PKGMGR_R_ENOMEM));
+               pkgmgrinfo_updateinfo_destroy(update_info);
                return -1;
        }
 
@@ -731,6 +708,7 @@ static int __handle_request_register_pkg_update_info(
        if (ret != PMINFO_R_OK) {
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(i)", PKGMGR_R_ENOMEM));
+               pkgmgrinfo_updateinfo_destroy(update_info);
                return -1;
        }
 
@@ -738,11 +716,13 @@ static int __handle_request_register_pkg_update_info(
        if (ret != PMINFO_R_OK) {
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(i)", PKGMGR_R_ENOMEM));
+               pkgmgrinfo_updateinfo_destroy(update_info);
                return -1;
        }
 
        reqkey = __generate_reqkey("register_pkg_update_info");
        if (reqkey == NULL) {
+               pkgmgrinfo_updateinfo_destroy(update_info);
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(i)", PKGMGR_R_ENOMEM));
                return -1;
@@ -750,10 +730,13 @@ static int __handle_request_register_pkg_update_info(
 
        if (_push_queue(target_uid, caller_uid, reqkey,
                        REQUEST_TYPE_REGISTER_PKG_UPDATE_INFO, "default",
-                       NULL, buf, update_info))
+                       NULL, buf, update_info)) {
+               pkgmgrinfo_updateinfo_destroy(update_info);
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(i)", PKGMGR_R_ESYSTEM));
-
+               free(reqkey);
+               return -1;
+       }
        if (!g_hash_table_insert(req_table, (gpointer)reqkey,
                                (gpointer)invocation))
                ERR("reqkey already exists");
@@ -811,9 +794,12 @@ static int __handle_request_unregister_pkg_update_info(
 
        if (_push_queue(target_uid, caller_uid, reqkey,
                        REQUEST_TYPE_UNREGISTER_PKG_UPDATE_INFO, "default",
-                       pkgid, NULL, NULL))
+                       pkgid, NULL, NULL)) {
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(i)", PKGMGR_R_ESYSTEM));
+               free(reqkey);
+               return -1;
+       }
 
        if (!g_hash_table_insert(req_table, (gpointer)reqkey,
                                (gpointer)invocation))
@@ -847,9 +833,12 @@ static int __handle_request_unregister_all_pkg_update_info(
 
        if (_push_queue(target_uid, caller_uid, reqkey,
                        REQUEST_TYPE_UNREGISTER_ALL_PKG_UPDATE_INFO, "default",
-                       NULL, NULL, NULL))
+                       NULL, NULL, NULL)) {
                g_dbus_method_invocation_return_value(invocation,
                                g_variant_new("(is)", PKGMGR_R_ESYSTEM, ""));
+               free(reqkey);
+               return -1;
+       }
 
        if (!g_hash_table_insert(req_table, (gpointer)reqkey,
                                (gpointer)invocation))