diff options
author | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> | 2013-06-20 21:21:37 +0300 |
---|---|---|
committer | Michael Demeter <michael.demeter@intel.com> | 2013-08-12 15:50:25 -0700 |
commit | d3eb2262c619ea3121cbb5dd22d19b145de55899 (patch) | |
tree | 17d80c9da43cff6ae15ddcc5cf0a3660a56ab0dc | |
parent | 9ec2f172808b6fe936a4e99675ebdaeb1a372a67 (diff) | |
download | coreutils-d3eb2262c619ea3121cbb5dd22d19b145de55899.tar.gz coreutils-d3eb2262c619ea3121cbb5dd22d19b145de55899.tar.bz2 coreutils-d3eb2262c619ea3121cbb5dd22d19b145de55899.zip |
id: adjust/restrict smack support to newer versions of libsmack
There was slight change to libsmack such that positive values are
reserved for returning length of the label for smack_new_label_from_*
functions.
* m4/jm-macros.m4: Set HAVE_SMACK when both smack_new_label_from_self()
and recently added smack_new_label_from_path() are present.
The latter's presence indicates the newer API of the former.
* src/id.c (main): Check that smack_new_label_from_self() < 0,
and not just non-zero.
-rw-r--r-- | m4/jm-macros.m4 | 11 | ||||
-rw-r--r-- | src/id.c | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/m4/jm-macros.m4 b/m4/jm-macros.m4 index 2e0476de3..649a3444c 100644 --- a/m4/jm-macros.m4 +++ b/m4/jm-macros.m4 @@ -146,11 +146,12 @@ AC_DEFUN([coreutils_MACROS], AC_ARG_ENABLE([libsmack], AC_HELP_STRING([--disable-libsmack], [disable libsmack support])) if test "X$enable_libsmack" != "Xno"; then - AC_CHECK_LIB([smack], [smack_smackfs_path], - [AC_CHECK_HEADER([sys/smack.h], - [LIB_SMACK=-lsmack - AC_DEFINE([HAVE_SMACK], [1], [libsmack usability])] - )]) + AC_CHECK_LIB([smack], [smack_new_label_from_self], + [AC_CHECK_LIB([smack], [smack_new_label_from_path], + [AC_CHECK_HEADER([sys/smack.h], + [LIB_SMACK=-lsmack + AC_DEFINE([HAVE_SMACK], [1], [libsmack usability])] + )])]) if test "X$LIB_SMACK" = "X"; then if test "X$enable_libsmack" = "Xyes"; then AC_MSG_ERROR([libsmack library was not found or not usable]) @@ -210,7 +210,8 @@ main (int argc, char **argv) if (selinux_enabled && getcon (&context) && just_context) error (EXIT_FAILURE, 0, _("can't get process context")); #ifdef HAVE_SMACK - else if (smack_enabled && smack_new_label_from_self ((char **) &context)) + else if (smack_enabled + && smack_new_label_from_self ((char **) &context) < 0) error (EXIT_FAILURE, 0, _("can't get process context")); #endif } |