From 3c028ff88b7f8b4a19a058ee44aeb42c10f4b398 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 15 Oct 2009 18:26:19 +1100 Subject: s4-smb: declare root_fid as a file handle In order to implement root_fid in the s4 SMB server we need to declare it as a handle type, just as for other fnum values in SMB. This required some extensive (but simple) changes in many bits of code. --- source4/smb_server/smb/reply.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/smb_server/smb/reply.c') diff --git a/source4/smb_server/smb/reply.c b/source4/smb_server/smb/reply.c index 104caca446..2c99a38575 100644 --- a/source4/smb_server/smb/reply.c +++ b/source4/smb_server/smb/reply.c @@ -2216,7 +2216,7 @@ void smbsrv_reply_ntcreate_and_X(struct smbsrv_request *req) /* notice that the word parameters are not word aligned, so we don't use VWV() */ fname_len = SVAL(req->in.vwv, 5); io->ntcreatex.in.flags = IVAL(req->in.vwv, 7); - io->ntcreatex.in.root_fid = IVAL(req->in.vwv, 11); + io->ntcreatex.in.root_fid.ntvfs = smbsrv_pull_fnum(req, req->in.vwv, 11); io->ntcreatex.in.access_mask = IVAL(req->in.vwv, 15); io->ntcreatex.in.alloc_size = BVAL(req->in.vwv, 19); io->ntcreatex.in.file_attr = IVAL(req->in.vwv, 27); -- cgit From d72b5a81ef86631e89030c8060f1cba90f6a664a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 15 Oct 2009 20:50:49 +1100 Subject: s4-smb: fill in fnum as well for root_fid This helps with the CIFS NTVFS backend, but doesn't solve all problems --- source4/smb_server/smb/reply.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/smb_server/smb/reply.c') diff --git a/source4/smb_server/smb/reply.c b/source4/smb_server/smb/reply.c index 2c99a38575..4baea4703a 100644 --- a/source4/smb_server/smb/reply.c +++ b/source4/smb_server/smb/reply.c @@ -2216,6 +2216,7 @@ void smbsrv_reply_ntcreate_and_X(struct smbsrv_request *req) /* notice that the word parameters are not word aligned, so we don't use VWV() */ fname_len = SVAL(req->in.vwv, 5); io->ntcreatex.in.flags = IVAL(req->in.vwv, 7); + io->ntcreatex.in.root_fid.fnum = IVAL(req->in.vwv, 11); io->ntcreatex.in.root_fid.ntvfs = smbsrv_pull_fnum(req, req->in.vwv, 11); io->ntcreatex.in.access_mask = IVAL(req->in.vwv, 15); io->ntcreatex.in.alloc_size = BVAL(req->in.vwv, 19); -- cgit From 46b7938d7e66c2ce25e605cd7c579f905c146616 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 17 Oct 2009 13:12:24 +1100 Subject: s4-smbserver: removed bogus initialisation of two union arms Thanks to Metze for spotting this. --- source4/smb_server/smb/reply.c | 1 - 1 file changed, 1 deletion(-) (limited to 'source4/smb_server/smb/reply.c') diff --git a/source4/smb_server/smb/reply.c b/source4/smb_server/smb/reply.c index 4baea4703a..2c99a38575 100644 --- a/source4/smb_server/smb/reply.c +++ b/source4/smb_server/smb/reply.c @@ -2216,7 +2216,6 @@ void smbsrv_reply_ntcreate_and_X(struct smbsrv_request *req) /* notice that the word parameters are not word aligned, so we don't use VWV() */ fname_len = SVAL(req->in.vwv, 5); io->ntcreatex.in.flags = IVAL(req->in.vwv, 7); - io->ntcreatex.in.root_fid.fnum = IVAL(req->in.vwv, 11); io->ntcreatex.in.root_fid.ntvfs = smbsrv_pull_fnum(req, req->in.vwv, 11); io->ntcreatex.in.access_mask = IVAL(req->in.vwv, 15); io->ntcreatex.in.alloc_size = BVAL(req->in.vwv, 19); -- cgit