]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3-smbd: Call sys_acl_free_acl() directly rather than via the VFS
authorAndrew Bartlett <abartlet@samba.org>
Mon, 13 Aug 2012 09:55:25 +0000 (19:55 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 15 Aug 2012 01:44:47 +0000 (11:44 +1000)
This will allow us to remove the struct smb_acl_t manipuations from the VFS layer,
which will be reduced to handling the get/set functions.

Andrew Bartlett

source3/smbd/posix_acls.c
source3/smbd/trans2.c

index a4ca642ed60f7da7a9267af18a520fe6d1ea22e8..4b5abd2566b2585f49ccae0d6ebe2bd06c0036ce 100644 (file)
@@ -3075,7 +3075,7 @@ static bool set_canon_ace_list(files_struct *fsp,
   fail:
 
        if (the_acl != NULL) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, the_acl);
+               sys_acl_free_acl(the_acl);
        }
 
        return ret;
@@ -3108,7 +3108,7 @@ SMB_ACL_T free_empty_sys_acl(connection_struct *conn, SMB_ACL_T the_acl)
        if (!the_acl)
                return NULL;
        if (sys_acl_get_entry(the_acl, SMB_ACL_FIRST_ENTRY, &entry) != 1) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, the_acl);
+               sys_acl_free_acl(the_acl);
                return NULL;
        }
        return the_acl;
@@ -3557,10 +3557,10 @@ static NTSTATUS posix_get_nt_acl_common(struct connection_struct *conn,
  done:
 
        if (posix_acl) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, posix_acl);
+               sys_acl_free_acl(posix_acl);
        }
        if (def_acl) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+               sys_acl_free_acl(def_acl);
        }
        free_canon_ace_list(file_ace);
        free_canon_ace_list(dir_ace);
@@ -4298,7 +4298,7 @@ int get_acl_group_bits( connection_struct *conn, const char *fname, mode_t *mode
                        }
                }
        }
-       SMB_VFS_SYS_ACL_FREE_ACL(conn, posix_acl);
+       sys_acl_free_acl(posix_acl);
        return result;
 }
 
@@ -4390,7 +4390,7 @@ static int copy_access_posix_acl(connection_struct *conn, const char *from, cons
 
  done:
 
-       SMB_VFS_SYS_ACL_FREE_ACL(conn, posix_acl);
+       sys_acl_free_acl(posix_acl);
        return ret;
 }
 
@@ -4420,7 +4420,7 @@ static bool directory_has_default_posix_acl(connection_struct *conn, const char
        }
 
        if (def_acl) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+               sys_acl_free_acl(def_acl);
        }
         return has_acl;
 }
@@ -4460,7 +4460,7 @@ int fchmod_acl(files_struct *fsp, mode_t mode)
 
   done:
 
-       SMB_VFS_SYS_ACL_FREE_ACL(conn, posix_acl);
+       sys_acl_free_acl(posix_acl);
        return ret;
 }
 
@@ -4611,7 +4611,7 @@ static SMB_ACL_T create_posix_acl_from_wire(connection_struct *conn, uint16 num_
  fail:
 
        if (the_acl != NULL) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, the_acl);
+               sys_acl_free_acl(the_acl);
        }
        return NULL;
 }
@@ -4655,12 +4655,12 @@ bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, cons
        if (SMB_VFS_SYS_ACL_SET_FILE(conn, fname, SMB_ACL_TYPE_DEFAULT, def_acl) == -1) {
                DEBUG(5,("set_unix_posix_default_acl: acl_set_file failed on directory %s (%s)\n",
                        fname, strerror(errno) ));
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+               sys_acl_free_acl(def_acl);
                return False;
        }
 
        DEBUG(10,("set_unix_posix_default_acl: set default acl for file %s\n", fname ));
-       SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+       sys_acl_free_acl(def_acl);
        return True;
 }
 
@@ -4794,10 +4794,10 @@ static bool remove_posix_acl(connection_struct *conn, files_struct *fsp, const c
  done:
 
        if (file_acl) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+               sys_acl_free_acl(file_acl);
        }
        if (new_file_acl) {
-               SMB_VFS_SYS_ACL_FREE_ACL(conn, new_file_acl);
+               sys_acl_free_acl(new_file_acl);
        }
        return ret;
 }
@@ -4826,20 +4826,20 @@ bool set_unix_posix_acl(connection_struct *conn, files_struct *fsp, const char *
                if (SMB_VFS_SYS_ACL_SET_FD(fsp, file_acl) == -1) {
                        DEBUG(5,("set_unix_posix_acl: acl_set_file failed on %s (%s)\n",
                                fname, strerror(errno) ));
-                       SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+                       sys_acl_free_acl(file_acl);
                        return False;
                }
        } else {
                if (SMB_VFS_SYS_ACL_SET_FILE(conn, fname, SMB_ACL_TYPE_ACCESS, file_acl) == -1) {
                        DEBUG(5,("set_unix_posix_acl: acl_set_file failed on %s (%s)\n",
                                fname, strerror(errno) ));
-                       SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+                       sys_acl_free_acl(file_acl);
                        return False;
                }
        }
 
        DEBUG(10,("set_unix_posix_acl: set acl for file %s\n", fname ));
-       SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+       sys_acl_free_acl(file_acl);
        return True;
 }
 
index c7bf4d0e2c8012f6ab8c43d4ec7dd15b71048726..a178ec5b0839c62ceaf8e99a347781b900611aa4 100644 (file)
@@ -4914,10 +4914,10 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn,
                                                (unsigned int)((num_file_acls + num_def_acls)*SMB_POSIX_ACL_ENTRY_SIZE +
                                                        SMB_POSIX_ACL_HEADER_SIZE) ));
                                        if (file_acl) {
-                                               SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+                                               sys_acl_free_acl(file_acl);
                                        }
                                        if (def_acl) {
-                                               SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+                                               sys_acl_free_acl(def_acl);
                                        }
                                        return NT_STATUS_BUFFER_TOO_SMALL;
                                }
@@ -4927,28 +4927,28 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn,
                                SSVAL(pdata,4,num_def_acls);
                                if (!marshall_posix_acl(conn, pdata + SMB_POSIX_ACL_HEADER_SIZE, psbuf, file_acl)) {
                                        if (file_acl) {
-                                               SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+                                               sys_acl_free_acl(file_acl);
                                        }
                                        if (def_acl) {
-                                               SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+                                               sys_acl_free_acl(def_acl);
                                        }
                                        return NT_STATUS_INTERNAL_ERROR;
                                }
                                if (!marshall_posix_acl(conn, pdata + SMB_POSIX_ACL_HEADER_SIZE + (num_file_acls*SMB_POSIX_ACL_ENTRY_SIZE), psbuf, def_acl)) {
                                        if (file_acl) {
-                                               SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+                                               sys_acl_free_acl(file_acl);
                                        }
                                        if (def_acl) {
-                                               SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+                                               sys_acl_free_acl(def_acl);
                                        }
                                        return NT_STATUS_INTERNAL_ERROR;
                                }
 
                                if (file_acl) {
-                                       SMB_VFS_SYS_ACL_FREE_ACL(conn, file_acl);
+                                       sys_acl_free_acl(file_acl);
                                }
                                if (def_acl) {
-                                       SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+                                       sys_acl_free_acl(def_acl);
                                }
                                data_size = (num_file_acls + num_def_acls)*SMB_POSIX_ACL_ENTRY_SIZE + SMB_POSIX_ACL_HEADER_SIZE;
                                break;