CI: verify a symlink has FILE_ATTRIBUTE_NORMAL set
authorRalph Boehme <slow@samba.org>
Mon, 1 Feb 2021 13:44:03 +0000 (14:44 +0100)
committerKarolin Seeger <kseeger@samba.org>
Fri, 26 Feb 2021 08:50:41 +0000 (08:50 +0000)
Not that it really makes sense to set FILE_ATTRIBUTE_NORMAL for symlinks in
POSIX client context, but that's what we had before 4.14.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14629

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit 5572ae296e720a00ab438d7b50cfc458af631f69)

selftest/knownfail.d/samba3.smbtorture_s3 [new file with mode: 0644]
source3/torture/test_posix.c

diff --git a/selftest/knownfail.d/samba3.smbtorture_s3 b/selftest/knownfail.d/samba3.smbtorture_s3
new file mode 100644 (file)
index 0000000..2b9c93a
--- /dev/null
@@ -0,0 +1,4 @@
+^samba3.smbtorture_s3.plain.POSIX-LS-WILDCARD.smbtorture.*
+^samba3.smbtorture_s3.crypt.POSIX-LS-WILDCARD.smbtorture.*
+^samba3.smbtorture_s3.plain.POSIX-LS-SINGLE.smbtorture.*
+^samba3.smbtorture_s3.crypt.POSIX-LS-SINGLE.smbtorture.*
index 415460cf86ce11bfac1bcedea46f4ea6646446f7..3ccb51d222b683650e912c9a50f5b6a1f9fbb213 100644 (file)
@@ -31,6 +31,7 @@ struct posix_test_entry {
        const char *name;
        const char *target;
        const char *expected;
+       uint32_t attr;
        uint64_t returned_size;
        bool ok;
 };
@@ -44,6 +45,9 @@ static NTSTATUS posix_ls_fn(struct file_info *finfo,
 
        for (; state->name != NULL; state++) {
                if (strequal(finfo->name, state->expected)) {
+                       if (state->attr != finfo->attr) {
+                               break;
+                       }
                        state->ok = true;
                        state->returned_size = finfo->size;
                        break;
@@ -57,6 +61,7 @@ static void posix_test_entries_reset(struct posix_test_entry *state)
 {
        for (; state->name != NULL; state++) {
                state->ok = false;
+               state->returned_size = 0;
        }
 }
 
@@ -111,14 +116,17 @@ bool run_posix_ls_wildcard_test(int dummy)
                        .name = symlnk_dangling,
                        .target = symlnk_dst_dangling,
                        .expected = symlnk_dangling,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_in_share,
                        .target = symlnk_dst_in_share,
                        .expected = symlnk_in_share,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_outside_share,
                        .target = symlnk_dst_outside_share,
                        .expected = symlnk_outside_share,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = NULL,
                }
@@ -275,14 +283,17 @@ bool run_posix_ls_single_test(int dummy)
                        .name = symlnk_dangling,
                        .target = symlnk_dst_dangling,
                        .expected = symlnk_dangling,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_in_share,
                        .target = symlnk_dst_in_share,
                        .expected = symlnk_in_share,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_outside_share,
                        .target = symlnk_dst_outside_share,
                        .expected = symlnk_outside_share,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = NULL,
                }
@@ -457,14 +468,17 @@ bool run_posix_readlink_test(int dummy)
                        .name = symlnk_dangling,
                        .target = symlnk_dst_dangling,
                        .expected = symlnk_dangling,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_in_share,
                        .target = symlnk_dst_in_share,
                        .expected = symlnk_in_share,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_outside_share,
                        .target = symlnk_dst_outside_share,
                        .expected = symlnk_outside_share,
+                       .attr = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = NULL,
                }