test-openat-safer: add more checks
authorEric Blake <ebb9@byu.net>
Sat, 5 Sep 2009 12:39:17 +0000 (06:39 -0600)
committerEric Blake <ebb9@byu.net>
Sat, 5 Sep 2009 18:42:31 +0000 (12:42 -0600)
* tests/test-openat-safer.c (main): Check more code paths.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
tests/test-openat-safer.c

index c53c7f802e01288b26f8fc23abd90599702532ec..938f6fd4e0aa844cb3adf08ee775b671712206a5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-09-05  Eric Blake  <ebb9@byu.net>
+
+       test-openat-safer: add more checks
+       * tests/test-openat-safer.c (main): Check more code paths.
+
 2009-09-05  Jim Meyering  <meyering@redhat.com>
 
        syntax-check: detect unnecessary inclusion of openat.h
index a62477bfd3125e7710dff31d0166f996977d5143..47d3ada9804f21bf1ba2e09baf22edae8a1e28d3 100644 (file)
@@ -92,6 +92,9 @@ main ()
          errno = 0;
          ASSERT (openat (dfd, "", O_RDONLY) == -1);
          ASSERT (errno == ENOENT);
+         errno = 0;
+         ASSERT (openat (-1, ".", O_RDONLY) == -1);
+         ASSERT (errno == EBADF);
 
          /* Check for trailing slash and /dev/null handling; the
             particular errno might be ambiguous.  */
@@ -102,8 +105,13 @@ main ()
          errno = 0;
          ASSERT (openat (dfd, "/dev/null/", O_RDONLY) == -1);
          /* ASSERT (errno == ENOTDIR); */
-         fd = openat (dfd, "/dev/null", O_RDONLY);
+         /* Using a bad directory is okay for absolute paths.  */
+         fd = openat (-1, "/dev/null", O_WRONLY);
          ASSERT (STDERR_FILENO < fd);
+         /* Using a non-directory is wrong for relative paths.  */
+         errno = 0;
+         ASSERT (openat (fd, ".", O_RDONLY) == -1);
+         ASSERT (errno == EBADF || errno == ENOTDIR);
          ASSERT (close (fd) == 0);
 
          /* Check for our witness file.  */