libsmack: fix label validation in smack_new_label_from_path

Off-by-one length was returned from the function. This patch fixes
the regression by doing full validation for the SMACK label.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
utils: drop build dependency on libattr, introduced by 5da1a22.

Use only glibc headers for xattr functions. Use ENODATA instead of ENOATTR.
Merge remote-tracking branch 'rafal-krypa/issue84' into v1.0.x
autogen.sh: fix passing arguments to configure

Fixing error when arguments to autogen.sh contain white space, i.e.:
./autogen.sh CFLAGS='-Wall -Wextra'

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Compile for the C99 standard.

The code already uses C99 constructs, but appropriate compiler options
were not set.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
utils: fix build warnings related to smack_smackfs_path()

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
libsmack: don't define __GNU_SOURCE in the code

__GNU_SOURCE is a glibc internal and should not be used directly.
It was already provided by AC_USE_SYSTEM_EXTENSIONS in configure.ac, so
it can be safely dropped.
Use more explicit AC_GNU_SOURCE in configure.ac instead (on Linux systems
they should be equivalent).

Signed-off-by: Rafal Krypa <r.krypa@samsung.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_path(). The common function can
handle both directory and single file,  so apply_rules_file() and
apply_cipso_file() are dropped.
The resulting code is 69 lines shorter and keeps directory traversal logic
in single place. It's side effect is applying CIPSO rules in one shot, just
like regular Smack rules.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
libsmack: use common code for smack_accesses_add() and smack_accessess_add_modify()

These API functions were very similar and are now implemented as wrappers
to a single internal function. This allows easier changes to data structures
used by libmskack and makes the code shorter.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
libsmack: use common code for smack_accesses_apply() and smack_accesses_save().

Centralizing code that changes internal smack_accesses representation to
text. Internal function accesses_print() now generates output for applying
the rules to kernel and saving them to a file. This allows easier changes
to data structures used by libmskack and makes the code shorter.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Update .gitignore files to ignore all build-time generated files

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Merge remote-tracking branch 'rafal-krypa/issue73' into v1.0.x
libsmack: change logic for detecting long labels in smack_accesses

Instead of storing label length in each smack_rule, have one integer in
smack_accesses to remember if long labels are used.
This saves few bytes per rule.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
libsmack: use 16 bits for smack access codes instead of sizeof(int) * 2

There are 6 access bits to be stored in the access field. Special value -1
is used to distinguish set rules from change rules. Shrinking the filed to
8 bits still leaves space for one more future access bit.

Signed-off-by: Rafal Krypa <r.krypa@samsung.com>