diff options
-rw-r--r-- | source4/torture/raw/samba3misc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/source4/torture/raw/samba3misc.c b/source4/torture/raw/samba3misc.c index fe413495ea..e36be6436a 100644 --- a/source4/torture/raw/samba3misc.c +++ b/source4/torture/raw/samba3misc.c @@ -537,9 +537,17 @@ BOOL torture_samba3_badpath(struct torture_context *torture) CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRfilexists)); status = raw_smbcli_t2open(cli_nt->tree, fpath, O_RDONLY | O_CREAT| O_EXCL, DENY_NONE, NULL); - CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_COLLISION); + if (!NT_STATUS_EQUAL(status, NT_STATUS_EAS_NOT_SUPPORTED) + || !lp_parm_bool(-1, "torture", "samba3", False)) { + /* Against samba3, treat EAS_NOT_SUPPORTED as acceptable */ + CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_COLLISION); + } status = raw_smbcli_t2open(cli_dos->tree, fpath, O_RDONLY | O_CREAT| O_EXCL, DENY_NONE, NULL); - CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRfilexists)); + if (!NT_STATUS_EQUAL(status, NT_STATUS_DOS(ERRDOS,ERReasnotsupported)) + || !lp_parm_bool(-1, "torture", "samba3", False)) { + /* Against samba3, treat EAS_NOT_SUPPORTED as acceptable */ + CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRfilexists)); + } status = raw_smbcli_ntcreate(cli_nt->tree, fpath, NULL); CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_COLLISION); |