lib/util Split samba-modules library into public and private parts
[mat/samba.git] / source4 / ntvfs / posix / pvfs_acl.c
index d7a778e1f7d35e5b28820ab504801a4416084492..d8090952244cec23c6d0b72677eb3f425a59a639 100644 (file)
 */
 
 #include "includes.h"
+#include "system/passwd.h"
 #include "auth/auth.h"
 #include "vfs_posix.h"
 #include "librpc/gen_ndr/xattr.h"
 #include "libcli/security/security.h"
 #include "param/param.h"
 #include "../lib/util/unix_privs.h"
-
-#if defined(UID_WRAPPER)
-#if !defined(UID_WRAPPER_REPLACE) && !defined(UID_WRAPPER_NOT_REPLACE)
-#define UID_WRAPPER_REPLACE
-#include "../uid_wrapper/uid_wrapper.h"
-#endif
-#else
-#define uwrap_enabled() 0
-#endif
+#include "lib/util/samba_module.h"
 
 /* the list of currently registered ACL backends */
 static struct pvfs_acl_backend {
@@ -94,16 +87,16 @@ NTSTATUS pvfs_acl_init(void)
        static bool initialized = false;
 #define _MODULE_PROTO(init) extern NTSTATUS init(void);
        STATIC_pvfs_acl_MODULES_PROTO;
-       init_module_fn static_init[] = { STATIC_pvfs_acl_MODULES };
-       init_module_fn *shared_init;
+       samba_init_module_fn static_init[] = { STATIC_pvfs_acl_MODULES };
+       samba_init_module_fn *shared_init;
 
        if (initialized) return NT_STATUS_OK;
        initialized = true;
 
-       shared_init = load_samba_modules(NULL, "pvfs_acl");
+       shared_init = samba_modules_load(NULL, "pvfs_acl");
 
-       run_init_functions(static_init);
-       run_init_functions(shared_init);
+       samba_init_module_fns_run(static_init);
+       samba_init_module_fns_run(shared_init);
 
        talloc_free(shared_init);
 
@@ -568,7 +561,7 @@ static NTSTATUS pvfs_access_check_unix(struct pvfs_state *pvfs,
                return NT_STATUS_ACCESS_DENIED;
        }
 
-       if (pvfs->ntvfs->ctx->protocol != PROTOCOL_SMB2) {
+       if (pvfs->ntvfs->ctx->protocol < PROTOCOL_SMB2_02) {
                /* on SMB, this bit is always granted, even if not
                   asked for */
                *access_mask |= SEC_FILE_READ_ATTRIBUTE;
@@ -595,7 +588,7 @@ NTSTATUS pvfs_access_check(struct pvfs_state *pvfs,
        bool allow_delete = false;
 
        /* on SMB2 a blank access mask is always denied */
-       if (pvfs->ntvfs->ctx->protocol == PROTOCOL_SMB2 &&
+       if (pvfs->ntvfs->ctx->protocol >= PROTOCOL_SMB2_02 &&
            *access_mask == 0) {
                return NT_STATUS_ACCESS_DENIED;
        }
@@ -621,7 +614,7 @@ NTSTATUS pvfs_access_check(struct pvfs_state *pvfs,
 
        /* expand the generic access bits to file specific bits */
        *access_mask = pvfs_translate_mask(*access_mask);
-       if (pvfs->ntvfs->ctx->protocol != PROTOCOL_SMB2) {
+       if (pvfs->ntvfs->ctx->protocol < PROTOCOL_SMB2_02) {
                *access_mask &= ~SEC_FILE_READ_ATTRIBUTE;
        }
 
@@ -647,7 +640,7 @@ NTSTATUS pvfs_access_check(struct pvfs_state *pvfs,
        status = se_access_check(sd, token, *access_mask, access_mask);
        talloc_free(acl);
 done:
-       if (pvfs->ntvfs->ctx->protocol != PROTOCOL_SMB2) {
+       if (pvfs->ntvfs->ctx->protocol < PROTOCOL_SMB2_02) {
                /* on SMB, this bit is always granted, even if not
                   asked for */
                *access_mask |= SEC_FILE_READ_ATTRIBUTE;
@@ -745,7 +738,7 @@ NTSTATUS pvfs_access_check_create(struct pvfs_state *pvfs,
                *access_mask &= ~SEC_FLAG_MAXIMUM_ALLOWED;
        }
 
-       if (pvfs->ntvfs->ctx->protocol != PROTOCOL_SMB2) {
+       if (pvfs->ntvfs->ctx->protocol < PROTOCOL_SMB2_02) {
                /* on SMB, this bit is always granted, even if not
                   asked for */
                *access_mask |= SEC_FILE_READ_ATTRIBUTE;