mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
Change canonicalise_acl() to not take an fsp.
Convert canonicalise_acl() to take connection_struct, is_directory and file name instead of files_struct pointer. Michael
This commit is contained in:
parent
bdb208124b
commit
d579a7f84f
@ -2110,10 +2110,11 @@ static void arrange_posix_perms(const char *filename, canon_ace **pp_list_head)
|
||||
Create a linked list of canonical ACE entries.
|
||||
****************************************************************************/
|
||||
|
||||
static canon_ace *canonicalise_acl( const files_struct *fsp, SMB_ACL_T posix_acl, SMB_STRUCT_STAT *psbuf,
|
||||
static canon_ace *canonicalise_acl(const struct connection_struct *conn,
|
||||
const bool is_directory, const char *fname,
|
||||
SMB_ACL_T posix_acl, SMB_STRUCT_STAT *psbuf,
|
||||
const DOM_SID *powner, const DOM_SID *pgroup, struct pai_val *pal, SMB_ACL_TYPE_T the_acl_type)
|
||||
{
|
||||
connection_struct *conn = fsp->conn;
|
||||
mode_t acl_mask = (S_IRUSR|S_IWUSR|S_IXUSR);
|
||||
canon_ace *list_head = NULL;
|
||||
canon_ace *ace = NULL;
|
||||
@ -2228,7 +2229,7 @@ static canon_ace *canonicalise_acl( const files_struct *fsp, SMB_ACL_T posix_acl
|
||||
* This next call will ensure we have at least a user/group/world set.
|
||||
*/
|
||||
|
||||
if (!ensure_canon_entry_valid(&list_head, fsp->conn->params, fsp->is_directory, powner, pgroup, psbuf, False))
|
||||
if (!ensure_canon_entry_valid(&list_head, conn->params, is_directory, powner, pgroup, psbuf, False))
|
||||
goto fail;
|
||||
|
||||
/*
|
||||
@ -2254,7 +2255,7 @@ static canon_ace *canonicalise_acl( const files_struct *fsp, SMB_ACL_T posix_acl
|
||||
}
|
||||
}
|
||||
|
||||
arrange_posix_perms(fsp->fsp_name,&list_head );
|
||||
arrange_posix_perms(fname,&list_head );
|
||||
|
||||
print_canon_ace_list( "canonicalise_acl: ace entries after arrange", list_head );
|
||||
|
||||
@ -2816,7 +2817,10 @@ NTSTATUS get_nt_acl(files_struct *fsp, uint32 security_info, SEC_DESC **ppdesc)
|
||||
*/
|
||||
|
||||
/* Create the canon_ace lists. */
|
||||
file_ace = canonicalise_acl( fsp, posix_acl, &sbuf, &owner_sid, &group_sid, pal, SMB_ACL_TYPE_ACCESS );
|
||||
file_ace = canonicalise_acl(fsp->conn, fsp->is_directory,
|
||||
fsp->fsp_name, posix_acl, &sbuf,
|
||||
&owner_sid, &group_sid, pal,
|
||||
SMB_ACL_TYPE_ACCESS);
|
||||
|
||||
/* We must have *some* ACLS. */
|
||||
|
||||
@ -2826,9 +2830,12 @@ NTSTATUS get_nt_acl(files_struct *fsp, uint32 security_info, SEC_DESC **ppdesc)
|
||||
}
|
||||
|
||||
if (fsp->is_directory && def_acl) {
|
||||
dir_ace = canonicalise_acl(fsp, def_acl, &sbuf,
|
||||
&global_sid_Creator_Owner,
|
||||
&global_sid_Creator_Group, pal, SMB_ACL_TYPE_DEFAULT );
|
||||
dir_ace = canonicalise_acl(fsp->conn, fsp->is_directory,
|
||||
fsp->fsp_name, def_acl,
|
||||
&sbuf,
|
||||
&global_sid_Creator_Owner,
|
||||
&global_sid_Creator_Group,
|
||||
pal, SMB_ACL_TYPE_DEFAULT);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user