Fix static analyzer issues
[platform/core/appfw/pkgmgr-server.git] / src / request.c
index eb67593..238a29f 100644 (file)
@@ -314,6 +314,7 @@ 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);
@@ -332,9 +333,12 @@ static int __handle_request_install(uid_t caller_uid,
        }
 
        for (i = 0; i < args_count; i++) {
-               strncat(args, tmp_args[i], strlen(tmp_args[i]));
-               if (i != args_count - 1)
-                       strncat(args, " ", strlen(" "));
+               s += strlen(tmp_args[i]);
+               strncat(args, tmp_args[i], len - s - 1);
+               if (i != args_count - 1) {
+                       s += strlen(" ");
+                       strncat(args, " ", len - s - 1);
+               }
        }
 
        if (target_uid == (uid_t)-1 || pkgpath == NULL) {
@@ -404,6 +408,7 @@ 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);
@@ -422,9 +427,12 @@ static int __handle_request_mount_install(uid_t caller_uid,
        }
 
        for (i = 0; i < args_count; i++) {
-               strncat(args, tmp_args[i], strlen(tmp_args[i]));
-               if (i != args_count - 1)
-                       strncat(args, " ", strlen(" "));
+               s += strlen(tmp_args[i]);
+               strncat(args, tmp_args[i], len - s - 1);
+               if (i != args_count - 1) {
+                       s += strlen(" ");
+                       strncat(args, " ", len - s - 1);
+               }
        }
 
        if (target_uid == (uid_t)-1 || pkgpath == NULL) {