]> granicus.if.org Git - strace/commitdiff
tests: add more utime checks
authorEugene Syromyatnikov <evgsyr@gmail.com>
Mon, 28 Nov 2016 09:44:54 +0000 (12:44 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 29 Nov 2016 00:27:51 +0000 (00:27 +0000)
* tests/utime.c: Include <unistd.h> and <asm/unistd.h>.
(main): Add checks for invalid pointers.

tests/utime.c

index 910447055126a5f13308888fbc7ee7f16bc9dbf3..ea5ecc409ce01ba1031a31f49d62abf65d1aed7f 100644 (file)
@@ -32,6 +32,9 @@
 #include <utime.h>
 #include <errno.h>
 #include <stdio.h>
+#include <unistd.h>
+
+#include <asm/unistd.h>
 
 static void
 print_tm(const struct tm * const p)
@@ -52,6 +55,21 @@ main(void)
        const struct utimbuf u = { .actime = t, .modtime = t };
        const struct utimbuf const *tail_u = tail_memdup(&u, sizeof(u));
 
+#ifdef __NR_utime
+       static const char *const dummy_str = "dummy filename";
+       char *const dummy_filename =
+               tail_memdup(dummy_str, sizeof(dummy_str) - 1);
+
+       rc = syscall(__NR_utime, dummy_filename + sizeof(dummy_str),
+                    tail_u + 1);
+       printf("utime(%p, %p) = %s\n", dummy_filename + sizeof(dummy_str),
+              tail_u + 1, sprintrc(rc));
+
+       rc = syscall(__NR_utime, dummy_filename, (struct tm *) tail_u + 1);
+       printf("utime(%p, %p) = %s\n",
+              dummy_filename, (struct tm *) tail_u + 1, sprintrc(rc));
+#endif /* __NR_utime */
+
        rc = utime("utime\nfilename", tail_u);
        const char *errstr = sprintrc(rc);
        printf("utime(\"utime\\nfilename\", {actime=");