X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fapply-default-acl.c;h=15383a003772aaf47736cefc7a0f957b02c1ccd8;hb=ca41da09458ee421117901cc3e1a96a37e921f14;hp=993b1f7649e14c50300174da1f5d87fcb534d20a;hpb=f22034c7b75b7096e6ef26de7a5bc8e12a3f0b07;p=apply-default-acl.git diff --git a/src/apply-default-acl.c b/src/apply-default-acl.c index 993b1f7..15383a0 100644 --- a/src/apply-default-acl.c +++ b/src/apply-default-acl.c @@ -34,35 +34,6 @@ -/** - * @brief Get the mode bits from the given file descriptor. - * - * @param fd - * The file descriptor (which may reference a directory) whose - * mode we want. - * - * @return A mode_t (st_mode) structure containing the mode bits. - * See sys/stat.h for details. - */ -mode_t get_mode(int fd) { - if (fd <= 0) { - errno = ENOENT; - return ACL_ERROR; - } - - struct stat s; - int result = fstat(fd, &s); - - if (result == 0) { - return s.st_mode; - } - else { - /* errno will be set already by lstat() */ - return result; - } -} - - /** * @brief Determine if the given file descriptor might refer to an @@ -482,8 +453,13 @@ int any_can_execute_or_dir(int fd) { int result = ACL_FAILURE; if (acl_is_minimal(acl)) { - mode_t mode = get_mode(fd); - if (mode & (S_IXUSR | S_IXOTH | S_IXGRP)) { + struct stat s; + if (fstat(fd, &s) == -1) { + perror("any_can_execute_or_dir (fstat)"); + result = ACL_ERROR; + goto cleanup; + } + if (s.st_mode & (S_IXUSR | S_IXOTH | S_IXGRP)) { result = ACL_SUCCESS; goto cleanup; }