mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
Do not call SMB_VFS_GET_REAL_FILENAME if the name is mangled
The GPFS get_real_file name does not know about mangled names. Tim, if onefs does not either, you need this bugfix :-) In case onefs does 8.3 names, we need to pass the mangled flag down to SMB_VFS_GET_REAL_FILENAME to give GPFS a chance say ENOTSUPP and do the fallback.
This commit is contained in:
parent
5c76472491
commit
c291a55a35
@ -791,16 +791,14 @@ static bool fname_equal(const char *name1, const char *name2,
|
||||
|
||||
static int get_real_filename_full_scan(connection_struct *conn,
|
||||
const char *path, const char *name,
|
||||
bool mangled,
|
||||
TALLOC_CTX *mem_ctx, char **found_name)
|
||||
{
|
||||
struct smb_Dir *cur_dir;
|
||||
const char *dname;
|
||||
bool mangled;
|
||||
char *unmangled_name = NULL;
|
||||
long curpos;
|
||||
|
||||
mangled = mangle_is_mangled(name, conn->params);
|
||||
|
||||
/* handle null paths */
|
||||
if ((path == NULL) || (*path == 0)) {
|
||||
path = ".";
|
||||
@ -897,6 +895,14 @@ int get_real_filename(connection_struct *conn, const char *path,
|
||||
char **found_name)
|
||||
{
|
||||
int ret;
|
||||
bool mangled;
|
||||
|
||||
mangled = mangle_is_mangled(name, conn->params);
|
||||
|
||||
if (mangled) {
|
||||
return get_real_filename_full_scan(conn, path, name, mangled,
|
||||
mem_ctx, found_name);
|
||||
}
|
||||
|
||||
/* Try the vfs first to take advantage of case-insensitive stat. */
|
||||
ret = SMB_VFS_GET_REAL_FILENAME(conn, path, name, mem_ctx, found_name);
|
||||
@ -910,9 +916,8 @@ int get_real_filename(connection_struct *conn, const char *path,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = get_real_filename_full_scan(conn, path, name, mem_ctx,
|
||||
found_name);
|
||||
return ret;
|
||||
return get_real_filename_full_scan(conn, path, name, mangled, mem_ctx,
|
||||
found_name);
|
||||
}
|
||||
|
||||
static NTSTATUS build_stream_path(TALLOC_CTX *mem_ctx,
|
||||
|
Loading…
Reference in New Issue
Block a user