diff options
author | Andrew Tridgell <tridge@samba.org> | 2009-08-05 11:21:06 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-08-05 11:21:06 +1000 |
commit | 58e5e1ea8d4c5a9eb8d36aa8132fd1ba3985ca53 (patch) | |
tree | c66cc43d180750e40a4a7ffb42ca1bfe6bbd7f11 /source4 | |
parent | fd43e0ee09e3f82093e9a15dd6cbd2fbaa113426 (diff) | |
download | samba-58e5e1ea8d4c5a9eb8d36aa8132fd1ba3985ca53.tar.gz samba-58e5e1ea8d4c5a9eb8d36aa8132fd1ba3985ca53.tar.bz2 samba-58e5e1ea8d4c5a9eb8d36aa8132fd1ba3985ca53.zip |
make the UID_WRAPPER skip checks at runtime
This fixes two issues pointed out by Andrew. It adds a runtime
uwrap_enabled() call that wraps the skips needed for uid emulation. It
also makes the skip in the directory_create_or_exist() function only
change the uid checking code, not the permissions code
Diffstat (limited to 'source4')
-rw-r--r-- | source4/heimdal_build/config.h | 6 | ||||
-rw-r--r-- | source4/include/includes.h | 6 | ||||
-rw-r--r-- | source4/ntvfs/posix/pvfs_acl.c | 14 |
3 files changed, 17 insertions, 9 deletions
diff --git a/source4/heimdal_build/config.h b/source4/heimdal_build/config.h index 8830942e30..8c0e6b0475 100644 --- a/source4/heimdal_build/config.h +++ b/source4/heimdal_build/config.h @@ -27,9 +27,13 @@ #undef HAVE_KRB5_ENCRYPT_BLOCK -#if defined(UID_WRAPPER) && !defined(UID_WRAPPER_REPLACE) && !defined(UID_WRAPPER_NOT_REPLACE) +#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 #endif diff --git a/source4/include/includes.h b/source4/include/includes.h index 37c6115f0f..e94c0fe633 100644 --- a/source4/include/includes.h +++ b/source4/include/includes.h @@ -73,9 +73,13 @@ #define TALLOC_ABORT(reason) smb_panic(reason) #endif -#if defined(UID_WRAPPER) && !defined(UID_WRAPPER_REPLACE) && !defined(UID_WRAPPER_NOT_REPLACE) +#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 #endif /* _INCLUDES_H */ diff --git a/source4/ntvfs/posix/pvfs_acl.c b/source4/ntvfs/posix/pvfs_acl.c index f5a00c08a8..232883911e 100644 --- a/source4/ntvfs/posix/pvfs_acl.c +++ b/source4/ntvfs/posix/pvfs_acl.c @@ -473,13 +473,13 @@ NTSTATUS pvfs_access_check_unix(struct pvfs_state *pvfs, max_bits |= SEC_STD_ALL; } -#ifdef UID_WRAPPER_REPLACE - /* when running with the uid wrapper, files will be created - owned by the ruid, but we may have a different simulated - euid. We need to force the permission bits as though the - files owner matches the euid */ - max_bits |= SEC_STD_ALL; -#endif + if (!uwrap_enabled()) { + /* when running with the uid wrapper, files will be created + owned by the ruid, but we may have a different simulated + euid. We need to force the permission bits as though the + files owner matches the euid */ + max_bits |= SEC_STD_ALL; + } if (*access_mask == SEC_FLAG_MAXIMUM_ALLOWED) { *access_mask = max_bits; |