summaryrefslogtreecommitdiff
path: root/source3/smbd/trans2.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r--source3/smbd/trans2.c61
1 files changed, 24 insertions, 37 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index c6a17cc93b..bbfe5cfb77 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -4728,10 +4728,10 @@ static NTSTATUS smb_file_mode_information(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_set_file_unix_link(connection_struct *conn,
- char *inbuf,
- const char *pdata,
- int total_data,
- const char *fname)
+ struct smb_request *req,
+ const char *pdata,
+ int total_data,
+ const char *fname)
{
pstring link_target;
const char *newname = fname;
@@ -4748,7 +4748,7 @@ static NTSTATUS smb_set_file_unix_link(connection_struct *conn,
return NT_STATUS_ACCESS_DENIED;
}
- srvstr_pull(inbuf, SVAL(inbuf, smb_flg2), link_target, pdata,
+ srvstr_pull(pdata, req->flags2, link_target, pdata,
sizeof(link_target), total_data, STR_TERMINATE);
/* !widelinks forces the target path to be within the share. */
@@ -4791,11 +4791,9 @@ static NTSTATUS smb_set_file_unix_link(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_set_file_unix_hlink(connection_struct *conn,
- char *inbuf,
- char *outbuf,
- const char *pdata,
- int total_data,
- pstring fname)
+ struct smb_request *req,
+ const char *pdata, int total_data,
+ pstring fname)
{
pstring oldname;
NTSTATUS status = NT_STATUS_OK;
@@ -4805,13 +4803,14 @@ static NTSTATUS smb_set_file_unix_hlink(connection_struct *conn,
return NT_STATUS_INVALID_PARAMETER;
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), oldname, pdata,
+ srvstr_get_path(pdata, req->flags2, oldname, pdata,
sizeof(oldname), total_data, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
- status = resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, oldname);
+ status = resolve_dfspath(conn, req->flags2 & FLAGS2_DFS_PATHNAMES,
+ oldname);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -4828,12 +4827,8 @@ static NTSTATUS smb_set_file_unix_hlink(connection_struct *conn,
static NTSTATUS smb_file_rename_information(connection_struct *conn,
struct smb_request *req,
- char *inbuf,
- char *outbuf,
- const char *pdata,
- int total_data,
- files_struct *fsp,
- pstring fname)
+ const char *pdata, int total_data,
+ files_struct *fsp, pstring fname)
{
BOOL overwrite;
uint32 root_fid;
@@ -4856,14 +4851,16 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
return NT_STATUS_INVALID_PARAMETER;
}
- srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), newname, &pdata[12],
+ srvstr_get_path_wcard(pdata, req->flags2, newname, &pdata[12],
sizeof(newname), len, 0, &status,
&dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
- status = resolve_dfspath_wcard(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, newname, &dest_has_wcard);
+ status = resolve_dfspath_wcard(conn,
+ req->flags2 & FLAGS2_DFS_PATHNAMES,
+ newname, &dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -6324,11 +6321,8 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
/* We must have a pathname for this. */
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- status = smb_set_file_unix_link(conn,
- inbuf,
- pdata,
- total_data,
- fname);
+ status = smb_set_file_unix_link(conn, req, pdata,
+ total_data, fname);
break;
}
@@ -6338,24 +6332,17 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
/* We must have a pathname for this. */
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- status = smb_set_file_unix_hlink(conn,
- inbuf,
- outbuf,
- pdata,
- total_data,
- fname);
+ status = smb_set_file_unix_hlink(conn, req,
+ pdata, total_data,
+ fname);
break;
}
case SMB_FILE_RENAME_INFORMATION:
{
status = smb_file_rename_information(conn, req,
- inbuf,
- outbuf,
- pdata,
- total_data,
- fsp,
- fname);
+ pdata, total_data,
+ fsp, fname);
break;
}