mirror of
https://github.com/samba-team/samba.git
synced 2025-02-26 21:57:41 +03:00
Fix bug #5783 FindFirst fails where search pattern == mangled filename.
That was an old and subtle bug. Jeremy.
This commit is contained in:
parent
0bbbe2c21f
commit
d275cc762d
@ -101,8 +101,7 @@ get any fatal errors that should immediately terminate the calling
|
||||
SMB processing whilst resolving.
|
||||
|
||||
If the saved_last_component != 0, then the unmodified last component
|
||||
of the pathname is returned there. This is used in an exceptional
|
||||
case in reply_mv (so far). If saved_last_component == 0 then nothing
|
||||
of the pathname is returned there. If saved_last_component == 0 then nothing
|
||||
is returned there.
|
||||
|
||||
If last_component_wcard is true then a MS wildcard was detected and
|
||||
|
@ -1892,7 +1892,7 @@ static void call_trans2findfirst(connection_struct *conn,
|
||||
bool requires_resume_key;
|
||||
int info_level;
|
||||
char *directory = NULL;
|
||||
const char *mask = NULL;
|
||||
char *mask = NULL;
|
||||
char *p;
|
||||
int last_entry_off=0;
|
||||
int dptr_num = -1;
|
||||
@ -1980,7 +1980,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
|
||||
return;
|
||||
}
|
||||
|
||||
ntstatus = unix_convert(ctx, conn, directory, True, &directory, NULL, &sbuf);
|
||||
ntstatus = unix_convert(ctx, conn, directory, True, &directory, &mask, &sbuf);
|
||||
if (!NT_STATUS_IS_OK(ntstatus)) {
|
||||
reply_nterror(req, ntstatus);
|
||||
return;
|
||||
@ -1996,10 +1996,12 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
|
||||
if(p == NULL) {
|
||||
/* Windows and OS/2 systems treat search on the root '\' as if it were '\*' */
|
||||
if((directory[0] == '.') && (directory[1] == '\0')) {
|
||||
mask = "*";
|
||||
mask = talloc_strdup(ctx,"*");
|
||||
if (!mask) {
|
||||
reply_nterror(req, NT_STATUS_NO_MEMORY);
|
||||
return;
|
||||
}
|
||||
mask_contains_wcard = True;
|
||||
} else {
|
||||
mask = directory;
|
||||
}
|
||||
directory = talloc_strdup(talloc_tos(), "./");
|
||||
if (!directory) {
|
||||
@ -2007,7 +2009,6 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
mask = p+1;
|
||||
*p = 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user