diff options
author | Jeremy Allison <jra@samba.org> | 2004-11-30 06:41:38 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:27 -0500 |
commit | 7e78059948612fa9f5d179a1e3f5f59e7ad5e456 (patch) | |
tree | 61b85b01e8ec3b67970893e5e58d3bcdde2392d3 /source/smbd/posix_acls.c | |
parent | 6711cb8b02f96d04af82d30b1274f76dc5461dc2 (diff) | |
download | samba-7e78059948612fa9f5d179a1e3f5f59e7ad5e456.tar.gz samba-7e78059948612fa9f5d179a1e3f5f59e7ad5e456.tar.xz samba-7e78059948612fa9f5d179a1e3f5f59e7ad5e456.zip |
r4016: Fix for bug found by Steve French client code (cifsfs) on
POSIX ACL set. You need to *get* a permset_t pointer from the entry before
any of the permset code will accept it as a valid value
Jeremy.
Diffstat (limited to 'source/smbd/posix_acls.c')
-rw-r--r-- | source/smbd/posix_acls.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/smbd/posix_acls.c b/source/smbd/posix_acls.c index ab46bae3462..d30cf62e7c6 100644 --- a/source/smbd/posix_acls.c +++ b/source/smbd/posix_acls.c @@ -3489,12 +3489,21 @@ static SMB_ACL_T create_posix_acl_from_wire(connection_struct *conn, uint16 num_ goto fail; } + /* Get the permset pointer from the new ACL entry. */ + if (SMB_VFS_SYS_ACL_GET_PERMSET(conn, the_entry, &the_permset) == -1) { + DEBUG(0,("create_posix_acl_from_wire: Failed to get permset on entry %u. (%s)\n", + i, strerror(errno) )); + goto fail; + } + + /* Map from wire to permissions. */ if (!unix_ex_wire_to_permset(conn, CVAL(pdata,(i*SMB_POSIX_ACL_ENTRY_SIZE)+1), &the_permset)) { DEBUG(0,("create_posix_acl_from_wire: invalid permset %u on entry %u.\n", CVAL(pdata,(i*SMB_POSIX_ACL_ENTRY_SIZE) + 1), i )); goto fail; } + /* Now apply to the new ACL entry. */ if (SMB_VFS_SYS_ACL_SET_PERMSET(conn, the_entry, the_permset) == -1) { DEBUG(0,("create_posix_acl_from_wire: Failed to add permset on entry %u. (%s)\n", i, strerror(errno) )); |