diff options
-rw-r--r-- | m4/jm-macros.m4 | 4 | ||||
-rw-r--r-- | src/selinux.c | 11 | ||||
-rw-r--r-- | src/selinux.h | 14 |
3 files changed, 25 insertions, 4 deletions
diff --git a/m4/jm-macros.m4 b/m4/jm-macros.m4 index 3f95def86..d7ccbab5c 100644 --- a/m4/jm-macros.m4 +++ b/m4/jm-macros.m4 @@ -44,9 +44,11 @@ AC_DEFUN([coreutils_MACROS], # used by shred AC_CHECK_FUNCS_ONCE([directio]) - # Used by install.c. coreutils_saved_libs=$LIBS LIBS="$LIBS $LIB_SELINUX" + # Used by selinux.c. + AC_CHECK_FUNCS([mode_to_security_class], [], []) + # Used by install.c. AC_CHECK_FUNCS([matchpathcon_init_prefix], [], [ case "$ac_cv_search_setfilecon:$ac_cv_header_selinux_selinux_h" in diff --git a/src/selinux.c b/src/selinux.c index 405f5f61e..c87e89689 100644 --- a/src/selinux.c +++ b/src/selinux.c @@ -29,8 +29,11 @@ #include "quote.h" #include "selinux.h" +#if HAVE_SELINUX_SELINUX_H + +# if ! HAVE_MODE_TO_SECURITY_CLASS /* - This function has being added to libselinux-2.1.12-5, but is here + This function has been added to libselinux-2.1.12-5, but is here for support with older versions of SELinux Translates a mode into an Internal SELinux security_class definition. @@ -58,6 +61,7 @@ mode_to_security_class (mode_t m) errno = EINVAL; return 0; } +# endif /* This function takes a PATH and a MODE and then asks SELinux what the label @@ -108,7 +112,7 @@ defaultcon (char const *path, mode_t mode) { int rc = -1; security_context_t scon = NULL, tcon = NULL; - context_t scontext = NULL, tcontext = NULL; + context_t scontext = 0, tcontext = 0; const char *contype; char *constr; char *newpath = NULL; @@ -179,7 +183,7 @@ restorecon_private (char const *path, bool local) int rc = -1; struct stat sb; security_context_t scon = NULL, tcon = NULL; - context_t scontext = NULL, tcontext = NULL; + context_t scontext = 0, tcontext = 0; const char *contype; char *constr; int fd; @@ -328,3 +332,4 @@ restorecon (char const *path, bool recurse, bool local) free (newpath); return ok; } +#endif diff --git a/src/selinux.h b/src/selinux.h index f60c083ac..31771632e 100644 --- a/src/selinux.h +++ b/src/selinux.h @@ -19,7 +19,21 @@ #ifndef COREUTILS_SELINUX_H # define COREUTILS_SELINUX_H +# if HAVE_SELINUX_SELINUX_H + extern bool restorecon (char const *path, bool recurse, bool preserve); extern int defaultcon (char const *path, mode_t mode); +# else + +static inline bool +restorecon (char const *path, bool recurse, bool preserve) +{ errno = ENOTSUP; return false; } + +static inline int +defaultcon (char const *path, mode_t mode) +{ errno = ENOTSUP; return -1; } + +# endif + #endif |