From 903ea3d36d8f5c63dabfc23d768450ee0b01dcdc Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 11 Mar 2008 19:28:34 +0100 Subject: smb_server: pass down RAW_RENAME_NTTRANS to the ntvfs layer metze (This used to be commit 80711c03e0e8fba6f80261facd939ef00e06c7fd) --- source4/smb_server/smb/nttrans.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'source4/smb_server/smb') diff --git a/source4/smb_server/smb/nttrans.c b/source4/smb_server/smb/nttrans.c index a20c41ba4d..1b49e23511 100644 --- a/source4/smb_server/smb/nttrans.c +++ b/source4/smb_server/smb/nttrans.c @@ -287,7 +287,30 @@ static NTSTATUS nttrans_set_sec_desc(struct smbsrv_request *req, static NTSTATUS nttrans_rename(struct smbsrv_request *req, struct nttrans_op *op) { - return NT_STATUS_NOT_IMPLEMENTED; + struct smb_nttrans *trans = op->trans; + union smb_rename *io; + + if (trans->in.params.length < 5) { + return NT_STATUS_INVALID_PARAMETER; + } + + /* parse the request */ + io = talloc(req, union smb_rename); + NT_STATUS_HAVE_NO_MEMORY(io); + + io->nttrans.level = RAW_RENAME_NTTRANS; + io->nttrans.in.file.ntvfs = smbsrv_pull_fnum(req, trans->in.params.data, 0); + io->nttrans.in.flags = SVAL(trans->in.params.data, 2); + + smbsrv_blob_pull_string(&req->in.bufinfo, &trans->in.params, 4, + &io->nttrans.in.new_name, + STR_TERMINATE); + if (!io->nttrans.in.new_name) { + return NT_STATUS_INVALID_PARAMETER; + } + + SMBSRV_CHECK_FILE_HANDLE_NTSTATUS(io->nttrans.in.file.ntvfs); + return ntvfs_rename(req->ntvfs, io); } /* -- cgit