summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>2013-06-20 21:21:37 +0300
committerMichael Demeter <michael.demeter@intel.com>2013-08-12 15:50:25 -0700
commitd3eb2262c619ea3121cbb5dd22d19b145de55899 (patch)
tree17d80c9da43cff6ae15ddcc5cf0a3660a56ab0dc
parent9ec2f172808b6fe936a4e99675ebdaeb1a372a67 (diff)
downloadcoreutils-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.m411
-rw-r--r--src/id.c3
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])
diff --git a/src/id.c b/src/id.c
index 937b7234d..c91dbcdbc 100644
--- a/src/id.c
+++ b/src/id.c
@@ -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
}