]> granicus.if.org Git - strace/commitdiff
tests: additional getcwd decoding checks
authorEugene Syromyatnikov <evgsyr@gmail.com>
Wed, 21 Sep 2016 21:20:45 +0000 (00:20 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 27 Sep 2016 17:53:50 +0000 (17:53 +0000)
* tests/getcwd.c (main): Add more checks for getcwd arguments decoding.

tests/getcwd.c

index 704a3157da93bb5fe333ff6c3477f199a9b9d81c..707c25c967d67876c091190f99b1cd0dfdb06b50 100644 (file)
@@ -13,6 +13,7 @@ main(void)
 {
        long res;
        char cur_dir[PATH_MAX + 1];
+       static const size_t bogus_size = (size_t) 0xbadc0deddeadfaceULL;
 
        res = syscall(__NR_getcwd, cur_dir, sizeof(cur_dir));
 
@@ -23,9 +24,15 @@ main(void)
        print_quoted_string(cur_dir);
        printf("\", %zu) = %ld\n", sizeof(cur_dir), res);
 
-       syscall(__NR_getcwd, cur_dir, 0);
+       res = syscall(__NR_getcwd, cur_dir, 0);
+       printf("getcwd(%p, 0) = %s\n", cur_dir, sprintrc(res));
 
-       printf("getcwd(%p, 0) = -1 ERANGE (%m)\n", cur_dir);
+       res = syscall(__NR_getcwd, NULL, bogus_size);
+       printf("getcwd(NULL, %zu) = %s\n", bogus_size, sprintrc(res));
+
+       res = syscall(__NR_getcwd, (void *) -1L, sizeof(cur_dir));
+       printf("getcwd(%p, %zu) = %s\n",
+              (void *) -1L, sizeof(cur_dir), sprintrc(res));
 
        puts("+++ exited with 0 +++");