]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
cgclassify: add argument check
authorIvana Hutarova Varekova <varekova@redhat.com>
Fri, 11 Mar 2011 11:01:13 +0000 (12:01 +0100)
committerJan Safranek <jsafrane@redhat.com>
Mon, 14 Mar 2011 14:25:00 +0000 (15:25 +0100)
Fix the problem described in https://bugzilla.redhat.com/show_bug.cgi?id=667968
cgclassify accepts invalid non-numeric arguments, testcase:

$ cgclassify -g cpu:/ xxx; echo $?
0

Signed-off-by: Ivana Hutarova Varekova <varekova@redhat.com>
Signed-off-by: Jan Safranek <jsafrane@redhat.com>
src/tools/cgclassify.c

index fcad4b293ab7046979b776be2167838aedde4001..cdd6a9db377250c51089a058b8fa7f90998215ce 100644 (file)
@@ -106,6 +106,7 @@ int main(int argc, char *argv[])
        int flag = 0;
        struct cgroup_group_spec *cgroup_list[CG_HIER_MAX];
        int c;
+       char *endptr;
 
 
        if (argc < 2) {
@@ -151,7 +152,14 @@ int main(int argc, char *argv[])
        }
 
        for (i = optind; i < argc; i++) {
-               pid = (uid_t) atoi(argv[i]);
+               pid = (uid_t) strtol(argv[i], &endptr, 10);
+               if (endptr[0] != '\0') {
+                       /* the input argument was not a number */
+                       fprintf(stderr, "Error: %s is not valid pid.\n",
+                               argv[i]);
+                       exit_code = 2;
+                       continue;
+               }
 
                if (flag)
                        ret = cgroup_register_unchanged_process(pid, flag);