Fix static analyzer issues 76/122476/1
authorSangyoon Jang <s89.jang@samsung.com>
Fri, 31 Mar 2017 12:10:34 +0000 (21:10 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Fri, 31 Mar 2017 12:10:34 +0000 (21:10 +0900)
Change-Id: I7e0899b101a48004cb5f832a6ddba21cfdf7cedb
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
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) {