libsmack: early fail in accesses_apply() if modify rules are not supported

In accesses_apply(), in the beginning of each iteration, check
that change_fd is a valid file descriptor if the current rule
is a modify rule. Return with -1 immediately if that is not the
case.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
libsmack: check in accesses_apply() that rule has short labels

Check rule has short labels when only 'load' is available.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
libsmack: remove redundant strlen() call from accesses_apply()

Return value of snprintf() should give the same length as strlen()
would given that string fits into buffer.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
libsmack: remove redundant check for clear flag form accesses_apply()

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
libsmack: fix smack_cipso_apply() failing with more than one rule

Fixing regression in f47b9c90 that causes smack_cipso_apply() to fail due
to a typo.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
smackctl: fix reporting "unknown action" (regression in ce452ab)

Running "smackctl apply" and "smackctl clear" ended with error and
message about unknown action, although the action was known and
performed successfully.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Merge remote-tracking branch 'rafal-krypa/issue70' into v1.0.x
Merge remote-tracking branch 'jsakkine/issue60' into v1.0.x
Do not silently ignore files when applying them in smackload/ctl

Detect unknown file types and non-regular files and fail if they
are found with proper error reporting.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
utils: apply access rules to load/load2 in one shot

Open load/load2 only once. Inside the callback only collect rules
using smack_accessed_add_from_file(). Finally, apply access rules
in a single slot.

This was inspired by feedback from Rafal Krypa <r.krypa@samsung.com>.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
utils: common.c: invalid fprintf()

fprintf() has path parameter that was not utilized.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
libsmack: add support for new access mode for setting locks ("l")

This change should be backward compatible for kernels without l-mode support
as long as requested permissions don't contain this mode.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
libsmack: clean up redundant stuff

Cleaned up redundant constants and code. Grouped related constants
nearby each other.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
utils: use common code for apply_rules and apply_cipso

Code for apply_rules() has been rewritten to use opendir() and readdir(),
but apply_cipso() remained implemented with nftw().
This patch implements both applying functions with opendir() and readdir()
using a common internal function apply_dir().
The resulting code is 45 lines shorter and keeps directory traversal logic
in single place.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Bumped version to 1.0.3.