summaryrefslogtreecommitdiffstats
path: root/source4
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-11-18 04:19:26 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:05:58 -0500
commit0b691afe81c2778de30f20c03ab2a5f29473f799 (patch)
tree76dd78ffb1f9a2b64aeeba278a315cf811120f23 /source4
parent85215a9a265b006497ec365d421be1f2b54cdca1 (diff)
downloadsamba-0b691afe81c2778de30f20c03ab2a5f29473f799.tar.gz
samba-0b691afe81c2778de30f20c03ab2a5f29473f799.tar.xz
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)
Diffstat (limited to 'source4')
-rw-r--r--source4/libcli/security/security_descriptor.c2
-rw-r--r--source4/ntvfs/posix/pvfs_acl.c1
-rw-r--r--source4/smb_server/nttrans.c13
3 files changed, 15 insertions, 1 deletions
diff --git a/source4/libcli/security/security_descriptor.c b/source4/libcli/security/security_descriptor.c
index 00857de1c6e..5ed5ef5c76c 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 ba92cdc31c0..216c9b4a710 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 d405af53d96..27fb4d22dbd 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;