diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-11-18 04:19:26 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:58 -0500 |
commit | 0b691afe81c2778de30f20c03ab2a5f29473f799 (patch) | |
tree | 76dd78ffb1f9a2b64aeeba278a315cf811120f23 | |
parent | 85215a9a265b006497ec365d421be1f2b54cdca1 (diff) | |
download | samba-0b691afe81c2778de30f20c03ab2a5f29473f799.tar.gz samba-0b691afe81c2778de30f20c03ab2a5f29473f799.tar.bz2 samba-0b691afe81c2778de30f20c03ab2a5f29473f799.zip |
r3836: - fixed the handling of NT_STATUS_BUFFER_TOO_SMALL in nttrans server
- fixed revision number on default DACL
- fixed DACL_PRESENT bit in acl query
with these fixes cacls.exe and the GUI ACL editor in w2k both work
against pvfs. The GUI editor is slow as it times out looking up the
SID -> name mappings.
(This used to be commit 4468018cb63fd884920c2b0f5235bded50c6b5db)
-rw-r--r-- | source4/libcli/security/security_descriptor.c | 2 | ||||
-rw-r--r-- | source4/ntvfs/posix/pvfs_acl.c | 1 | ||||
-rw-r--r-- | source4/smb_server/nttrans.c | 13 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source4/libcli/security/security_descriptor.c b/source4/libcli/security/security_descriptor.c index 00857de1c6..5ed5ef5c76 100644 --- a/source4/libcli/security/security_descriptor.c +++ b/source4/libcli/security/security_descriptor.c @@ -115,7 +115,7 @@ NTSTATUS security_descriptor_dacl_add(struct security_descriptor *sd, if (sd->dacl == NULL) { return NT_STATUS_NO_MEMORY; } - sd->dacl->revision = SD_REVISION; + sd->dacl->revision = NT4_ACL_REVISION; sd->dacl->size = 0; sd->dacl->num_aces = 0; sd->dacl->aces = NULL; diff --git a/source4/ntvfs/posix/pvfs_acl.c b/source4/ntvfs/posix/pvfs_acl.c index ba92cdc31c..216c9b4a71 100644 --- a/source4/ntvfs/posix/pvfs_acl.c +++ b/source4/ntvfs/posix/pvfs_acl.c @@ -52,6 +52,7 @@ static NTSTATUS pvfs_default_acl(struct pvfs_state *pvfs, if (token->num_sids > 1) { sd->group_sid = token->user_sids[1]; } + sd->type |= SEC_DESC_DACL_PRESENT; for (i=0;i<token->num_sids;i++) { struct security_ace ace; diff --git a/source4/smb_server/nttrans.c b/source4/smb_server/nttrans.c index d405af53d9..27fb4d22db 100644 --- a/source4/smb_server/nttrans.c +++ b/source4/smb_server/nttrans.c @@ -413,6 +413,19 @@ void reply_nttrans(struct smbsrv_request *req) return; } + if (trans.out.setup_count > trans.in.max_setup) { + req_reply_error(req, NT_STATUS_BUFFER_TOO_SMALL); + return; + } + if (trans.out.params.length > trans.in.max_param) { + status = NT_STATUS_BUFFER_TOO_SMALL; + trans.out.params.length = trans.in.max_param; + } + if (trans.out.data.length > trans.in.max_data) { + status = NT_STATUS_BUFFER_TOO_SMALL; + trans.out.data.length = trans.in.max_data; + } + params_left = trans.out.params.length; data_left = trans.out.data.length; params = trans.out.params.data; |