selftests: openat2: add RESOLVE_ conflict test
authorAleksa Sarai <cyphar@cyphar.com>
Tue, 27 Oct 2020 23:50:44 +0000 (10:50 +1100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 3 Dec 2020 09:16:28 +0000 (10:16 +0100)
Now that we reject conflicting RESOLVE_ flags, add a selftest to avoid
regressions.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Link: https://lore.kernel.org/r/20201027235044.5240-3-cyphar@cyphar.com
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
tools/testing/selftests/openat2/openat2_test.c

index b386367..381d874 100644 (file)
@@ -155,7 +155,7 @@ struct flag_test {
        int err;
 };
 
-#define NUM_OPENAT2_FLAG_TESTS 23
+#define NUM_OPENAT2_FLAG_TESTS 24
 
 void test_openat2_flags(void)
 {
@@ -210,6 +210,12 @@ void test_openat2_flags(void)
                  .how.flags = O_TMPFILE | O_RDWR,
                  .how.mode = 0x0000A00000000000ULL, .err = -EINVAL },
 
+               /* ->resolve flags must not conflict. */
+               { .name = "incompatible resolve flags (BENEATH | IN_ROOT)",
+                 .how.flags = O_RDONLY,
+                 .how.resolve = RESOLVE_BENEATH | RESOLVE_IN_ROOT,
+                 .err = -EINVAL },
+
                /* ->resolve must only contain RESOLVE_* flags. */
                { .name = "invalid how.resolve and O_RDONLY",
                  .how.flags = O_RDONLY,