Skip to content

Commit

Permalink
s3: torture: Add test to show an SMB1 DFS path of "\\x//\\/" crashes …
Browse files Browse the repository at this point in the history
…smbd.

Adds knownfail.

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

Signed-off-by: Jeremy Allison <[email protected]>
Reviewed-by: Ralph Boehme <[email protected]>
  • Loading branch information
jrasamba authored and slowfranklin committed Jul 27, 2023
1 parent c2e83eb commit 2aa9ffa
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 0 deletions.
1 change: 1 addition & 0 deletions selftest/knownfail.d/dfs_badpath
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
^samba3.smbtorture_s3.smb1.SMB1-DFS-BADPATH.smbtorture\(fileserver_smb1\)
14 changes: 14 additions & 0 deletions source3/selftest/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,20 @@ def is_module_enabled(module):
'$PASSWORD',
smbtorture3,
"-mNT1"])
#
# SMB1-DFS-BADPATH needs to run against a special share msdfs-pathname-share
# BUG: https://bugzilla.samba.org/show_bug.cgi?id=15419
#
plantestsuite("samba3.smbtorture_s3.smb1.SMB1-DFS-BADPATH",
"fileserver_smb1",
[os.path.join(samba3srcdir,
"script/tests/test_smbtorture_s3.sh"),
'SMB1-DFS-BADPATH',
'//$SERVER_IP/msdfs-pathname-share',
'$USERNAME',
'$PASSWORD',
smbtorture3,
"-mNT1"])

#
# SMB2-STREAM-ACL needs to run against a special share - vfs_wo_fruit
Expand Down
1 change: 1 addition & 0 deletions source3/torture/proto.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ bool run_smb2_dfs_filename_leading_backslash(int dummy);
bool run_smb1_dfs_paths(int dummy);
bool run_smb1_dfs_search_paths(int dummy);
bool run_smb1_dfs_operations(int dummy);
bool run_smb1_dfs_check_badpath(int dummy);
bool run_list_dir_async_test(int dummy);
bool run_delete_on_close_non_empty(int dummy);
bool run_delete_on_close_nonwrite_delete_yes_test(int dummy);
Expand Down
56 changes: 56 additions & 0 deletions source3/torture/test_smb1_dfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -3810,6 +3810,26 @@ static bool test_smb1_chkpath(struct cli_state *cli)
return retval;
}

/*
* Test BUG: https://bugzilla.samba.org/show_bug.cgi?id=15419
*/

static bool test_smb1_chkpath_bad(struct cli_state *cli)
{
NTSTATUS status;

status = smb1_chkpath(cli, "\\x//\\/");
if (!NT_STATUS_IS_OK(status)) {
printf("%s:%d SMB1chkpath of %s failed (%s)\n",
__FILE__,
__LINE__,
"\\x//\\/",
nt_errstr(status));
return false;
}
return true;
}

static NTSTATUS smb1_ctemp(struct cli_state *cli,
const char *path,
char **tmp_path)
Expand Down Expand Up @@ -4226,3 +4246,39 @@ bool run_smb1_dfs_operations(int dummy)
(void)smb1_dfs_delete(cli, "\\BAD\\BAD\\file");
return retval;
}

/*
* Test BUG: https://bugzilla.samba.org/show_bug.cgi?id=15419
*/

bool run_smb1_dfs_check_badpath(int dummy)
{
struct cli_state *cli = NULL;
bool dfs_supported = false;

printf("Starting SMB1-DFS-CHECK-BADPATH\n");

if (!torture_init_connection(&cli)) {
return false;
}

if (!torture_open_connection(&cli, 0)) {
return false;
}

/* Ensure this is a DFS share. */
dfs_supported = smbXcli_conn_dfs_supported(cli->conn);
if (!dfs_supported) {
printf("Server %s does not support DFS\n",
smbXcli_conn_remote_name(cli->conn));
return false;
}
dfs_supported = smbXcli_tcon_is_dfs_share(cli->smb1.tcon);
if (!dfs_supported) {
printf("Share %s does not support DFS\n",
cli->share);
return false;
}

return test_smb1_chkpath_bad(cli);
}
4 changes: 4 additions & 0 deletions source3/torture/torture.c
Original file line number Diff line number Diff line change
Expand Up @@ -15385,6 +15385,10 @@ static struct {
.name = "SMB1-DFS-OPERATIONS",
.fn = run_smb1_dfs_operations,
},
{
.name = "SMB1-DFS-BADPATH",
.fn = run_smb1_dfs_check_badpath,
},
{
.name = "CLEANUP1",
.fn = run_cleanup1,
Expand Down

0 comments on commit 2aa9ffa

Please sign in to comment.