diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-03-13 09:22:11 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-03-13 12:24:10 +0100 |
commit | 256341001927de4c8b34c870bc0e56892ddbb533 (patch) | |
tree | 190e106d837d3bd3ffc2f55c6efbcd48b9ec55c0 /cpukit/libcsupport/src/sup_fs_check_permissions.c | |
parent | Filesystem: New defaults fsync_h and fdatasync_h (diff) | |
download | rtems-256341001927de4c8b34c870bc0e56892ddbb533.tar.bz2 |
Filesystem: Rename defines
o Removed RTEMS_LIBIO_PERMS_SEARCH.
o Renamed RTEMS_LIBIO_PERMS_READ in RTEMS_FS_PERMS_READ.
o Renamed RTEMS_LIBIO_PERMS_WRITE in RTEMS_FS_PERMS_WRITE.
o Renamed RTEMS_LIBIO_PERMS_EXEC in RTEMS_FS_PERMS_EXEC.
o Renamed RTEMS_LIBIO_FOLLOW_HARD_LINK in RTEMS_FS_FOLLOW_HARD_LINK.
o Renamed RTEMS_LIBIO_FOLLOW_SYM_LINK in RTEMS_FS_FOLLOW_SYM_LINK.
o Renamed RTEMS_LIBIO_MAKE in RTEMS_FS_MAKE.
o Renamed RTEMS_LIBIO_EXCLUSIVE in RTEMS_FS_EXCLUSIVE.
o Renamed RTEMS_LIBIO_ACCEPT_RESIDUAL_DELIMITERS in
RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS.
o Renamed RTEMS_LIBIO_REJECT_TERMINAL_DOT in
RTEMS_FS_REJECT_TERMINAL_DOT.
Diffstat (limited to 'cpukit/libcsupport/src/sup_fs_check_permissions.c')
-rw-r--r-- | cpukit/libcsupport/src/sup_fs_check_permissions.c | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/cpukit/libcsupport/src/sup_fs_check_permissions.c b/cpukit/libcsupport/src/sup_fs_check_permissions.c index 8dcecb6119..85d237cce6 100644 --- a/cpukit/libcsupport/src/sup_fs_check_permissions.c +++ b/cpukit/libcsupport/src/sup_fs_check_permissions.c @@ -16,8 +16,53 @@ #include "config.h" #endif +#include <sys/stat.h> + #include <rtems/libio_.h> +#define RTEMS_FS_USR_SHIFT 6 +#define RTEMS_FS_GRP_SHIFT 3 +#define RTEMS_FS_OTH_SHIFT 0 + +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_READ << RTEMS_FS_USR_SHIFT) == S_IRUSR, + S_IRUSR +); +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_READ << RTEMS_FS_GRP_SHIFT) == S_IRGRP, + S_IRGRP +); +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_READ << RTEMS_FS_OTH_SHIFT) == S_IROTH, + S_IROTH +); + +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_WRITE << RTEMS_FS_USR_SHIFT) == S_IWUSR, + S_IWUSR +); +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_WRITE << RTEMS_FS_GRP_SHIFT) == S_IWGRP, + S_IWGRP +); +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_WRITE << RTEMS_FS_OTH_SHIFT) == S_IWOTH, + S_IWOTH +); + +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_EXEC << RTEMS_FS_USR_SHIFT) == S_IXUSR, + S_IXUSR +); +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_EXEC << RTEMS_FS_GRP_SHIFT) == S_IXGRP, + S_IXGRP +); +RTEMS_STATIC_ASSERT( + (RTEMS_FS_PERMS_EXEC << RTEMS_FS_OTH_SHIFT) == S_IXOTH, + S_IXOTH +); + bool rtems_filesystem_check_access( int eval_flags, mode_t node_mode, @@ -25,18 +70,18 @@ bool rtems_filesystem_check_access( gid_t node_gid ) { - mode_t perm_flags = eval_flags & RTEMS_LIBIO_PERMS_RWX; + mode_t perm_flags = eval_flags & RTEMS_FS_PERMS_RWX; uid_t task_uid = geteuid(); if (task_uid == 0 || task_uid == node_uid) { - perm_flags <<= 6; + perm_flags <<= RTEMS_FS_USR_SHIFT; } else { gid_t task_gid = getegid(); if (task_gid == 0 || task_gid == node_gid) { - perm_flags <<= 3; + perm_flags <<= RTEMS_FS_GRP_SHIFT; } else { - perm_flags <<= 0; + perm_flags <<= RTEMS_FS_OTH_SHIFT; } } |