r2151: Added some more ad-hoc tests. Found bugs in Samba3 with these :-).
authorJeremy Allison <jra@samba.org>
Tue, 31 Aug 2004 21:34:14 +0000 (21:34 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:58:27 +0000 (12:58 -0500)
Jeremy.

source/torture/raw/chkpath.c

index b5f03dd3a1d97e7badf5bd540ce2051a4bf2c75d..f5e86c80481c1919c17785279985a480b48444f7 100644 (file)
@@ -37,6 +37,7 @@ static BOOL test_chkpath(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
        NTSTATUS status;
        BOOL ret = True;
        int fnum = -1;
+       int fnum1 = -1;
 
        io.in.path = BASEDIR;
 
@@ -80,6 +81,61 @@ static BOOL test_chkpath(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_chkpath(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID);
 
+       io.in.path = BASEDIR"\\.\\";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID);
+
+       io.in.path = BASEDIR"\\.\\nt";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = BASEDIR"\\.\\.\\nt";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = BASEDIR"\\nt";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       io.in.path = BASEDIR".\\foo";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = ".\\";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID);
+
+       io.in.path = ".\\.";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = ".\\.\\.\\.\\foo\\.\\.\\";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = BASEDIR".\\.\\.\\.\\foo\\.\\.\\";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = BASEDIR".\\.\\.\\.\\foo\\..\\.\\";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = BASEDIR".";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_NOT_FOUND);
+
        io.in.path = "\\";
        printf("testing %s\n", io.in.path);
        status = smb_raw_chkpath(cli->tree, &io);
@@ -115,11 +171,33 @@ static BOOL test_chkpath(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_chkpath(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_NOT_A_DIRECTORY);
 
+       /* We expect this open to fail with the same error code as the chkpath below. */
+       fnum1 = smbcli_nt_create_full(cli->tree, BASEDIR "\\nt\\Visual Studio\\VB98\\vb6.exe\\3",
+                               0, GENERIC_RIGHTS_FILE_ALL_ACCESS,
+                               FILE_ATTRIBUTE_NORMAL,
+                               NTCREATEX_SHARE_ACCESS_DELETE|
+                               NTCREATEX_SHARE_ACCESS_READ|
+                               NTCREATEX_SHARE_ACCESS_WRITE,
+                               NTCREATEX_DISP_OVERWRITE_IF,
+                               0, 0);
+       status = smbcli_nt_error(cli->tree);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
        io.in.path = BASEDIR "\\nt\\Visual Studio\\VB98\\vb6.exe\\3";
        printf("testing %s\n", io.in.path);
        status = smb_raw_chkpath(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
 
+       io.in.path = BASEDIR "\\nt\\Visual Studio\\VB98\\vb6.exe\\3\\foo";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
+       io.in.path = BASEDIR "\\nt\\3\\foo";
+       printf("testing %s\n", io.in.path);
+       status = smb_raw_chkpath(cli->tree, &io);
+       CHECK_STATUS(status, NT_STATUS_OBJECT_PATH_NOT_FOUND);
+
        io.in.path = BASEDIR "\\nt\\Visual Studio\\*\\vb6.exe\\3";
        printf("testing %s\n", io.in.path);
        status = smb_raw_chkpath(cli->tree, &io);