fix: smack_new_from_path() follow parameter

Mistake in smack_new_from_path(). When follow is true getxattr()
should be called and lgetxattr() otherwise.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Return length of the label on success in smack_new_label_from*

Return length of the label on success and negative value on
failure.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Added missing smack_new_label_from_path symbol to libsmack.sym

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
smack_new_label_from_path fix: removed const specifier

Label parameter had const specifier by mistake.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Merge pull request #12 from rafal-krypa/samsung

Use xattr.h from libc, not from libattr.
Removed smackd and smackctl.

For shell usage smackload is enough so we don't want to be these as
part of the 1.0 release. systemd has built-in support for loading
SMACK rules.
Documentation fixes

* Added doc/smack_new_label_from_path.3.
* Fixed doxygen warnings from smack.h.
Added smackctl back.

Added smackctl back because Debian needs it.
LIBSMACK -> LIBSMAC_1.0 in libsmack.sym

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Removed doc/smackd.8 from debian/smack-utils.manpages
Prevent potentially unterminated buffers while adding rule to the list

Functions smack_accesses_add() and smack_accesses_add_modify() don't check
length of arguments subject and object. These arguments are used as source
for strncpy(), which can cause labels to be truncated.

But the length argument for strncpy() is too large. This might cause
rule->subject or rule->object to be not terminated by null character.
It can happen when these functions are called from outside libsmack.
It can also happen while parsing files in smack_accesses_add_from_file(),
because that function doesn't validate subject and object too.

This commit fixes the problem by checking arguments in smack_accesses_add()
and smack_accesses_add_modify(). After checking strcpy() is safe for
copying them.
Avoid memory allocation while opening smackfs files.

Using openat() on pre-opened smackfs directory eliminates need to construct
absolute path to a smackfs file before opening it.