mirror of
https://github.com/samba-team/samba.git
synced 2024-12-28 07:21:54 +03:00
r21754: Volker is completely correct. There's no need for
the RESOLVE_DFSPATH macros and their varients any more. Fix reporting profile bug with all error returns. Jeremy.
This commit is contained in:
parent
c1cfeb61a1
commit
cdf0fdb104
@ -64,26 +64,6 @@ struct dfs_path {
|
|||||||
pstring reqpath;
|
pstring reqpath;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RESOLVE_DFSPATH(name, conn, inbuf, outbuf) \
|
|
||||||
{ if ((SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES) && \
|
|
||||||
lp_host_msdfs() && lp_msdfs_root(SNUM(conn)) && \
|
|
||||||
dfs_redirect(name, conn, False)) \
|
|
||||||
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, \
|
|
||||||
ERRSRV, ERRbadpath);; }
|
|
||||||
|
|
||||||
#define RESOLVE_DFSPATH_STATUS(name, conn, inbuf, outbuf) \
|
|
||||||
{ if ((SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES) && \
|
|
||||||
lp_host_msdfs() && lp_msdfs_root(SNUM(conn)) && \
|
|
||||||
dfs_redirect(name, conn, False)) \
|
|
||||||
return NT_STATUS_PATH_NOT_COVERED;; }
|
|
||||||
|
|
||||||
#define RESOLVE_DFSPATH_WCARD(name, conn, inbuf, outbuf) \
|
|
||||||
{ if ((SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES) && \
|
|
||||||
lp_host_msdfs() && lp_msdfs_root(SNUM(conn)) && \
|
|
||||||
dfs_redirect(name,conn, True)) \
|
|
||||||
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, \
|
|
||||||
ERRSRV, ERRbadpath);; }
|
|
||||||
|
|
||||||
#define init_dfsroot(conn, inbuf, outbuf) \
|
#define init_dfsroot(conn, inbuf, outbuf) \
|
||||||
{ if (lp_msdfs_root(SNUM(conn)) && lp_host_msdfs()) { \
|
{ if (lp_msdfs_root(SNUM(conn)) && lp_host_msdfs()) { \
|
||||||
DEBUG(2,("Serving %s as a Dfs root\n", \
|
DEBUG(2,("Serving %s as a Dfs root\n", \
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
Version 3.0
|
Version 3.0
|
||||||
MSDfs services for Samba
|
MSDfs services for Samba
|
||||||
Copyright (C) Shirish Kalele 2000
|
Copyright (C) Shirish Kalele 2000
|
||||||
|
Copyright (C) Jeremy Allison 2007
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -435,7 +436,7 @@ static BOOL resolve_dfs_path(TALLOC_CTX *ctx,
|
|||||||
for details.
|
for details.
|
||||||
*****************************************************************/
|
*****************************************************************/
|
||||||
|
|
||||||
BOOL dfs_redirect( pstring pathname, connection_struct *conn, BOOL search_wcard_flag )
|
static BOOL dfs_redirect( connection_struct *conn, pstring pathname, BOOL search_wcard_flag )
|
||||||
{
|
{
|
||||||
struct dfs_path dp;
|
struct dfs_path dp;
|
||||||
|
|
||||||
@ -1149,3 +1150,32 @@ int enum_msdfs_links(TALLOC_CTX *ctx, struct junction_map *jucn, int jn_max)
|
|||||||
}
|
}
|
||||||
return jn_count;
|
return jn_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Core function to resolve a dfs pathname.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
BOOL resolve_dfspath(connection_struct *conn, BOOL dfs_pathnames, pstring name)
|
||||||
|
{
|
||||||
|
if (dfs_pathnames && lp_host_msdfs() && lp_msdfs_root(SNUM(conn)) &&
|
||||||
|
dfs_redirect(conn, name, False)) {
|
||||||
|
return False; /* Pathname didn't resolve. */
|
||||||
|
}
|
||||||
|
return True;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Core function to resolve a dfs pathname possibly containing a wildcard.
|
||||||
|
This function is identical to the above except for the BOOL param to
|
||||||
|
dfs_redirect but I need this to be separate so it's really clear when
|
||||||
|
we're allowing wildcards and when we're not. JRA.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
BOOL resolve_dfspath_wcard(connection_struct *conn, BOOL dfs_pathnames, pstring name)
|
||||||
|
{
|
||||||
|
if (dfs_pathnames && lp_host_msdfs() && lp_msdfs_root(SNUM(conn)) &&
|
||||||
|
dfs_redirect(conn, name, True)) {
|
||||||
|
return False; /* Pathname didn't resolve. */
|
||||||
|
}
|
||||||
|
return True;
|
||||||
|
}
|
||||||
|
@ -615,7 +615,10 @@ int reply_ntcreate_and_X(connection_struct *conn,
|
|||||||
* Now contruct the smb_open_mode value from the filename,
|
* Now contruct the smb_open_mode value from the filename,
|
||||||
* desired access and the share access.
|
* desired access and the share access.
|
||||||
*/
|
*/
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBntcreateX);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
oplock_request = (flags & REQUEST_OPLOCK) ? EXCLUSIVE_OPLOCK : 0;
|
oplock_request = (flags & REQUEST_OPLOCK) ? EXCLUSIVE_OPLOCK : 0;
|
||||||
if (oplock_request) {
|
if (oplock_request) {
|
||||||
@ -1270,7 +1273,9 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
|
|
||||||
new_file_attributes = set_posix_case_semantics(conn, file_attributes);
|
new_file_attributes = set_posix_case_semantics(conn, file_attributes);
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -1749,8 +1754,14 @@ int reply_ntrename(connection_struct *conn,
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(oldname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, oldname)) {
|
||||||
RESOLVE_DFSPATH(newname, conn, inbuf, outbuf);
|
END_PROFILE(SMBntrename);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, newname)) {
|
||||||
|
END_PROFILE(SMBntrename);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(3,("reply_ntrename : %s -> %s\n",oldname,newname));
|
DEBUG(3,("reply_ntrename : %s -> %s\n",oldname,newname));
|
||||||
|
|
||||||
|
@ -632,7 +632,10 @@ int reply_checkpath(connection_struct *conn, char *inbuf,char *outbuf, int dum_s
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, name)) {
|
||||||
|
END_PROFILE(SMBcheckpath);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(3,("reply_checkpath %s mode=%d\n", name, (int)SVAL(inbuf,smb_vwv0)));
|
DEBUG(3,("reply_checkpath %s mode=%d\n", name, (int)SVAL(inbuf,smb_vwv0)));
|
||||||
|
|
||||||
@ -711,7 +714,10 @@ int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBgetatr);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
/* dos smetimes asks for a stat of "" - it returns a "hidden directory"
|
/* dos smetimes asks for a stat of "" - it returns a "hidden directory"
|
||||||
under WfWg - weird! */
|
under WfWg - weird! */
|
||||||
@ -790,7 +796,10 @@ int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBsetatr);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -945,7 +954,10 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
return ERROR_NT(nt_status);
|
return ERROR_NT(nt_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_WCARD(path, conn, inbuf, outbuf);
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, path)) {
|
||||||
|
END_PROFILE(SMBsearch);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
p++;
|
p++;
|
||||||
status_len = SVAL(p, 0);
|
status_len = SVAL(p, 0);
|
||||||
@ -1203,7 +1215,10 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBopen);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -1327,7 +1342,10 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBopenX);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -1505,7 +1523,10 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBcreate);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -1601,7 +1622,10 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
pstrcat(fname,"TMXXXXXX");
|
pstrcat(fname,"TMXXXXXX");
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
END_PROFILE(SMBctemp);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -2004,7 +2028,10 @@ int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_WCARD(name, conn, inbuf, outbuf);
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, name)) {
|
||||||
|
END_PROFILE(SMBunlink);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(3,("reply_unlink : %s\n",name));
|
DEBUG(3,("reply_unlink : %s\n",name));
|
||||||
|
|
||||||
@ -3634,7 +3661,10 @@ int reply_mkdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(directory, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, directory)) {
|
||||||
|
END_PROFILE(SMBmkdir);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, directory, False, NULL, &sbuf);
|
status = unix_convert(conn, directory, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -3852,7 +3882,10 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(directory, conn, inbuf, outbuf)
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, directory)) {
|
||||||
|
END_PROFILE(SMBrmdir);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, directory, False, NULL, &sbuf);
|
status = unix_convert(conn, directory, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -4604,8 +4637,14 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_WCARD(name, conn, inbuf, outbuf);
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, name)) {
|
||||||
RESOLVE_DFSPATH_WCARD(newname, conn, inbuf, outbuf);
|
END_PROFILE(SMBmv);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, newname)) {
|
||||||
|
END_PROFILE(SMBmv);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(3,("reply_mv : %s -> %s\n",name,newname));
|
DEBUG(3,("reply_mv : %s -> %s\n",name,newname));
|
||||||
|
|
||||||
@ -4791,8 +4830,14 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
return ERROR_DOS(ERRSRV,ERRinvdevice);
|
return ERROR_DOS(ERRSRV,ERRinvdevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_WCARD(name, conn, inbuf, outbuf);
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, name)) {
|
||||||
RESOLVE_DFSPATH_WCARD(newname, conn, inbuf, outbuf);
|
END_PROFILE(SMBcopy);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, newname)) {
|
||||||
|
END_PROFILE(SMBcopy);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, name, source_has_wild, NULL, &sbuf1);
|
status = unix_convert(conn, name, source_has_wild, NULL, &sbuf1);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -4983,7 +5028,10 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(newdir, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, newdir)) {
|
||||||
|
END_PROFILE(pathworks_setdir);
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
if (strlen(newdir) != 0) {
|
if (strlen(newdir) != 0) {
|
||||||
if (!vfs_directory_exist(conn,newdir,NULL)) {
|
if (!vfs_directory_exist(conn,newdir,NULL)) {
|
||||||
|
@ -1746,7 +1746,9 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
|
|||||||
return ERROR_NT(ntstatus);
|
return ERROR_NT(ntstatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_WCARD(directory, conn, inbuf, outbuf);
|
if (!resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, directory)) {
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
ntstatus = unix_convert(conn, directory, True, NULL, &sbuf);
|
ntstatus = unix_convert(conn, directory, True, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(ntstatus)) {
|
if (!NT_STATUS_IS_OK(ntstatus)) {
|
||||||
@ -3140,7 +3142,9 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
@ -4304,7 +4308,9 @@ static NTSTATUS smb_set_file_unix_hlink(connection_struct *conn,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_STATUS(oldname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, oldname)) {
|
||||||
|
return NT_STATUS_PATH_NOT_COVERED;
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(10,("smb_set_file_unix_hlink: SMB_SET_FILE_UNIX_LINK doing hard link %s -> %s\n",
|
DEBUG(10,("smb_set_file_unix_hlink: SMB_SET_FILE_UNIX_LINK doing hard link %s -> %s\n",
|
||||||
fname, oldname));
|
fname, oldname));
|
||||||
@ -4350,7 +4356,9 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH_STATUS(newname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, newname)) {
|
||||||
|
return NT_STATUS_PATH_NOT_COVERED;
|
||||||
|
}
|
||||||
|
|
||||||
/* Check the new name has no '/' characters. */
|
/* Check the new name has no '/' characters. */
|
||||||
if (strchr_m(newname, '/')) {
|
if (strchr_m(newname, '/')) {
|
||||||
@ -5432,7 +5440,9 @@ static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char
|
|||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
if (!resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname)) {
|
||||||
|
ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
|
||||||
|
}
|
||||||
|
|
||||||
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
status = unix_convert(conn, fname, False, NULL, &sbuf);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user