Author: vlendec Date: 2007-01-07 10:29:12 +0000 (Sun, 07 Jan 2007) New Revision: 20595
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20595 Log: W2k and XP don't always show the top directory as hidden, w2k3 does. I think Samba should follow w2k3 in this respect. Volker Modified: branches/SAMBA_4_0/source/torture/raw/samba3misc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/raw/samba3misc.c =================================================================== --- branches/SAMBA_4_0/source/torture/raw/samba3misc.c 2007-01-07 04:53:49 UTC (rev 20594) +++ branches/SAMBA_4_0/source/torture/raw/samba3misc.c 2007-01-07 10:29:12 UTC (rev 20595) @@ -229,7 +229,9 @@ BOOL ret = True; TALLOC_CTX *mem_ctx; BOOL nt_status_support; + uint16_t attr; + if (!(mem_ctx = talloc_init("torture_samba3_badpath"))) { d_printf("talloc_init failed\n"); return False; @@ -385,9 +387,14 @@ status = smbcli_getatr(cli_dos->tree, "<\\bla", NULL, NULL, NULL); CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRinvalidname)); - { - uint16_t attr; + if (lp_parm_bool(-1, "torture", "w2k3", False) || + lp_parm_bool(-1, "torture", "samba3", False)) { + /* + * XP and w2k don't show this behaviour, but I think + * Samba3 should follow W2k3 + */ + status = smbcli_getatr(cli_nt->tree, "", &attr, NULL, NULL); CHECK_STATUS(status, NT_STATUS_OK); if (attr != (FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_DIRECTORY)) { @@ -397,23 +404,22 @@ |FILE_ATTRIBUTE_DIRECTORY); ret = False; } + } - status = smbcli_setatr(cli_nt->tree, "", - FILE_ATTRIBUTE_DIRECTORY, -1); - CHECK_STATUS(status, NT_STATUS_ACCESS_DENIED); - status = smbcli_setatr(cli_dos->tree, "", - FILE_ATTRIBUTE_DIRECTORY, -1); - CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRnoaccess)); + status = smbcli_setatr(cli_nt->tree, "", + FILE_ATTRIBUTE_DIRECTORY, -1); + CHECK_STATUS(status, NT_STATUS_ACCESS_DENIED); + status = smbcli_setatr(cli_dos->tree, "", + FILE_ATTRIBUTE_DIRECTORY, -1); + CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRnoaccess)); + + status = smbcli_setatr(cli_nt->tree, ".", + FILE_ATTRIBUTE_DIRECTORY, -1); + CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID); + status = smbcli_setatr(cli_dos->tree, ".", + FILE_ATTRIBUTE_DIRECTORY, -1); + CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRinvalidname)); - status = smbcli_setatr(cli_nt->tree, ".", - FILE_ATTRIBUTE_DIRECTORY, -1); - CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID); - status = smbcli_setatr(cli_dos->tree, ".", - FILE_ATTRIBUTE_DIRECTORY, -1); - CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRinvalidname)); - } - - /* Try the same set with openX. */ status = raw_smbcli_open(cli_nt->tree, "..", O_RDONLY, DENY_NONE, NULL);