diff options
author | Jeremy Allison <jra@samba.org> | 2001-06-09 01:38:54 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-06-09 01:38:54 +0000 |
commit | f63ee18c684af33342de2c5757f9fdf0b7d84997 (patch) | |
tree | 0115bdef20e84af196e58bfa8fa5ff6795641087 /source3/smbd/posix_acls.c | |
parent | c7b67c26e2e6d0ba3e881a729bf91e8ba1d9bde7 (diff) | |
download | samba-f63ee18c684af33342de2c5757f9fdf0b7d84997.tar.gz samba-f63ee18c684af33342de2c5757f9fdf0b7d84997.tar.bz2 samba-f63ee18c684af33342de2c5757f9fdf0b7d84997.zip |
*Wonderful* patch from Andrew Bartlett that will help ensure tdb's are
cleaned on clients abending connections. Thanks Andrew !
Jeremy.
(This used to be commit 1b3977c5367a0b713b194f369abd9872ae01ac2a)
Diffstat (limited to 'source3/smbd/posix_acls.c')
-rw-r--r-- | source3/smbd/posix_acls.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/source3/smbd/posix_acls.c b/source3/smbd/posix_acls.c index 0cc0f2bac6..d369746e50 100644 --- a/source3/smbd/posix_acls.c +++ b/source3/smbd/posix_acls.c @@ -2056,12 +2056,25 @@ BOOL set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd) } } - if (acl_perms && acl_set_support && fsp->is_directory && dir_ace_list) { - if (!set_canon_ace_list(fsp, dir_ace_list, True, &acl_set_support)) { - DEBUG(3,("set_nt_acl: failed to set default acl on directory %s (%s).\n", fsp->fsp_name, strerror(errno) )); - free_canon_ace_list(file_ace_list); - free_canon_ace_list(dir_ace_list); - return False; + if (acl_perms && acl_set_support && fsp->is_directory) { + if (dir_ace_list) { + if (!set_canon_ace_list(fsp, dir_ace_list, True, &acl_set_support)) { + DEBUG(3,("set_nt_acl: failed to set default acl on directory %s (%s).\n", fsp->fsp_name, strerror(errno) )); + free_canon_ace_list(file_ace_list); + free_canon_ace_list(dir_ace_list); + return False; + } + } else { + + /* + * No default ACL - delete one if it exists. + */ + + if (sys_acl_delete_def_file(dos_to_unix(fsp->fsp_name,False)) == -1) { + DEBUG(3,("set_nt_acl: sys_acl_delete_def_file failed (%s)\n", strerror(errno))); + free_canon_ace_list(file_ace_list); + return False; + } } } |