]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
r4016: Fix for bug found by Steve French client code (cifsfs) on
authorJeremy Allison <jra@samba.org>
Tue, 30 Nov 2004 06:41:38 +0000 (06:41 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:53:27 +0000 (10:53 -0500)
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.

source/smbd/posix_acls.c

index ab46bae3462f2940cb5c7b9fef1566fab4d6268a..d30cf62e7c66c787d07a042a1e8dfa80c9fc7cfc 100644 (file)
@@ -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) ));