Split the one sys_acl_free call into sys_acl_free_TYPE calls, to allow
authorJeremy Allison <jra@samba.org>
Tue, 19 Dec 2000 18:41:51 +0000 (18:41 +0000)
committerJeremy Allison <jra@samba.org>
Tue, 19 Dec 2000 18:41:51 +0000 (18:41 +0000)
easier wrapping of non-POSIX ACL interfaces.
Jeremy.

source/include/proto.h
source/lib/sysacls.c
source/smbd/posix_acls.c

index 21121878651a47be49d3b5df7a24e517c17252a9..d54f26dd0b5d8efccc8bbbfea569e0d6d2176b9b 100644 (file)
@@ -17,9 +17,6 @@ void cmd_tar(void);
 int process_tar(void);
 int tar_parseargs(int argc, char *argv[], char *Optarg, int Optind);
 
-/*The following definitions come from  groupdb/mapping.c  */
-
-
 /*The following definitions come from  lib/access.c  */
 
 BOOL allow_access(char *deny_list,char *allow_list,
@@ -250,22 +247,24 @@ int sys_acl_get_permset( SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p);
 void *sys_acl_get_qualifier( SMB_ACL_ENTRY_T entry_d);
 SMB_ACL_T sys_acl_get_file( const char *path_p, SMB_ACL_TYPE_T type);
 SMB_ACL_T sys_acl_get_fd(int fd);
-int sys_acl_free( void *obj_p);
 int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset);
 int sys_acl_add_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm);
 int sys_acl_get_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm);
 char *sys_acl_to_text( SMB_ACL_T the_acl, ssize_t *plen);
+int sys_acl_free_text(char *text);
+int sys_acl_free_acl(SMB_ACL_T the_acl) ;
 int sys_acl_get_entry( SMB_ACL_T the_acl, int entry_id, SMB_ACL_ENTRY_T *entry_p);
 int sys_acl_get_tag_type( SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p);
 int sys_acl_get_permset( SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p);
 void *sys_acl_get_qualifier( SMB_ACL_ENTRY_T entry_d);
 SMB_ACL_T sys_acl_get_file( const char *path_p, SMB_ACL_TYPE_T type);
 SMB_ACL_T sys_acl_get_fd(int fd);
-int sys_acl_free( void *obj_p);
 int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset);
 int sys_acl_add_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm);
 int sys_acl_get_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm);
 char *sys_acl_to_text( SMB_ACL_T the_acl, ssize_t *plen);
+int sys_acl_free_text(char *text);
+int sys_acl_free_acl(SMB_ACL_T the_acl) ;
 
 /*The following definitions come from  lib/system.c  */
 
@@ -668,6 +667,9 @@ uint32 cli_lsa_lookup_sids(struct cli_state *cli, POLICY_HND *hnd,
 uint32 cli_lsa_lookup_names(struct cli_state *cli, POLICY_HND *hnd,
                            int num_names, char **names, DOM_SID **sids,
                            uint32 **types, int *num_sids);
+uint32 cli_lsa_query_info_policy(struct cli_state *cli, POLICY_HND *hnd, 
+                                uint16 info_class, fstring domain_name, 
+                                DOM_SID * domain_sid);
 
 /*The following definitions come from  libsmb/cliconnect.c  */
 
index e2cf535d3e56a63d856c204463645f7c0c14bed2..6f26ff8007b1d15adc814b34cc31975031df12f9 100644 (file)
@@ -36,7 +36,6 @@ extern int DEBUGLEVEL;
  void *sys_acl_get_qualifier( SMB_ACL_ENTRY_T entry_d)
  SMB_ACL_T sys_acl_get_file( const char *path_p, SMB_ACL_TYPE_T type)
  SMB_ACL_T sys_acl_get_fd(int fd)
- int sys_acl_free( void *obj_p)
  int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset);
  int sys_acl_add_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm);
  char *sys_acl_to_text( SMB_ACL_T acl, ssize_t *plen)
@@ -45,6 +44,18 @@ extern int DEBUGLEVEL;
  More POSIX braindamage.
 
  int sys_acl_get_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
+
+ The generic POSIX free is the following call. We split this into
+ several different free functions as we may need to add tag info
+ to structures when emulating the POSIX interface.
+
+ int sys_acl_free( void *obj_p)
+
+ The calls we actually use are :
+
+ int sys_acl_free_text(char *text) - free acl_to_text
+ int sys_acl_free_acl(SMB_ACL_T posix_acl)
+
 */
 
 #if defined(HAVE_POSIX_ACLS)
@@ -81,11 +92,6 @@ SMB_ACL_T sys_acl_get_fd(int fd)
        return acl_get_fd(fd);
 }
 
-int sys_acl_free( void *obj_p)
-{
-       return acl_free(obj_p);
-}
-
 int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset)
 {
        return acl_clear_perms(permset);
@@ -106,6 +112,16 @@ char *sys_acl_to_text( SMB_ACL_T the_acl, ssize_t *plen)
        return acl_to_text( the_acl, plen);
 }
 
+int sys_acl_free_text(char *text)
+{
+       return acl_free(text);
+}
+
+int sys_acl_free_acl(SMB_ACL_T the_acl) 
+{
+       return acl_free(the_acl);
+}
+
 #elif defined(HAVE_SOLARIS_ACLS)
 
 #elif defined(HAVE_IRIX_ACLS)
@@ -142,11 +158,6 @@ SMB_ACL_T sys_acl_get_fd(int fd)
        return (SMB_ACL_T)NULL;
 }
 
-int sys_acl_free( void *obj_p)
-{
-       return -1;
-}
-
 int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset)
 {
        return -1;
@@ -166,4 +177,14 @@ char *sys_acl_to_text( SMB_ACL_T the_acl, ssize_t *plen)
 {
        return NULL;
 }
+
+int sys_acl_free_text(char *text)
+{
+       return -1;
+}
+
+int sys_acl_free_acl(SMB_ACL_T the_acl) 
+{
+       return -1;
+}
 #endif /* No ACLs. */
index bc27ea9ae2c494c6f6b8a7aca4fd035e74b09a4e..7b8d693a1d17c730c43dfcd0926dead7d8a0569c 100644 (file)
@@ -544,7 +544,7 @@ static canon_ace *canonicalise_acl( SMB_ACL_T posix_acl, SMB_STRUCT_STAT *psbuf)
 
                dbgtext("canonicalize_acl: processed acl %s\n", acl_text == NULL ? "NULL" : acl_text );
                if (acl_text)
-                       sys_acl_free(acl_text);
+                       sys_acl_free_text(acl_text);
        }
 
        return list_head;
@@ -688,9 +688,9 @@ size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
   done:
 
        if (posix_acl)  
-               sys_acl_free(posix_acl);
+               sys_acl_free_acl(posix_acl);
        if (dir_acl)
-               sys_acl_free(dir_acl);
+               sys_acl_free_acl(dir_acl);
        if (file_ace)
                free_canon_ace_list(file_ace);
        if (dir_ace)