Cleaned up command line arguments handling in chsmack.

Argument handling code looks terrible at the moment in chsmack.
Migrated to getopt_long().
Added AUTHORS file.
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.
Revert "Avoid memory allocation while opening smackfs files."

This reverts commit 0426039bffdb82b0f7974639c1c1e361929b1cd5.
Removed redundant is_smackfs_mounted().

This functionality is fully handled in the library initialization.
Major documentation cleanup.

smack.h was starting to rotten so I did a major cleanup for it.
Also fixed couple of minor doxygen issues by removing deprecated
variables.
Set revision for v1.0.2 release

This was forgotten to set for v1.0.1. My apologies.
Setting this early on so will not be forgotten when
v1.0.2 is tagged.
Update configure.ac version and mainter information

Update version to 1.0.2 and maintaer email from @intel.com
to @linux.intel.com.
Cleaned up init code.

There was lot of clutter and misleading comments in the code
and some minor coding convention issues. This patch cleans up
init.c for the most part.
(cherry picked from commit c59864f9d4a67dcf76ba01d9c4db2b12fada6339)
libsmack: clean up smack_accesses_add_modify()

This patch makes smack_accesses_add_modify() easier to follow by
changing variable names bit more self-documentative and less easier
to mix up with adding and deleting rules. This patch also fixes some
very minor coding style errors.

Also documentation of this function is cleaned up.
(cherry picked from commit 22c98dd03e352057b23f8d8d2d9ad252175c685b)
Fixes for doxygen errors coming from 3810596.

Doxygen errors that are regression from 3810596. Went in because
I forgot to install doxygen into my test environment.
(cherry picked from commit 8ef1846c05d32a92b23538ee491fd31350c2a045)
Documented order in which access rules are applied to kernel.
(cherry picked from commit f82cadf3b7a9d84ae0bf2aa06fb8ecff9b4332dc)
Fix: allow CIPSO labels with zero categories

There was false restriction in smack_cipso_add_from_file() that
disallowed CIPSO labels without categories.

For example, this example given in the SMACK kernel documentation
should be perfectly legal:

TopSecret 7
(cherry picked from commit 4e4ea9142727ca7f14bf1d64cd81949b28bb1d0b)
Change apply_cipso_cb() to use proper apply_cipso_file()

apply_cipso_cb() used improper apply_rules_file(). Changed this to
call apply_cipso_file() instead.
(cherry picked from commit d45ffe9082243377cdba9a2d224bab0e110501e0)
Fix: accept 255 character labels

Example:

 # /home/jsakkine/devel/smack/utils/chsmack \
   -a$(printf '12345%.0s' {1..51}) foo
 foo: Invalid argument
 # /home/jsakkine/devel/smack/utils/chsmack \
   -a$(printf '12345%.0s' {1..51} | head -c -1) foo
 #

This patch fixes this issue.
(cherry picked from commit 1794fed08418b0e254e1e3a7325a8a67f8186bbc)
utils/chsmack: fix hazardous option parsing

The variable option_index was only set to a proper value if the
given option is a long option. There was also exit() missing on
error condition if SMACK label was invalid.

This patch removes option_index, parameter name from corresponding
error message and adds exit() call when the error condition
realizes.

[jarkko.sakkinen@linux.intel.com: rewrote patch description]
(cherry picked from commit 18ebc2fe71da94599e45029d7b26144c6bbe7cb4)
Add parameter name back to the chsmack error message

This patch add parameter name back to the error message. Instead
of relaying on hazardous longindex parameter of getopt_long(), a
look-up table is constructed to map short option to the corresponding
struct option entry.

Additionally, the basename of the application is added to the error
message. Also usage message is converted to use basename instead of
the full path name.
(cherry picked from commit d98a04ff7ccbcfcf36d9d4d43de68448b70da9fa)
Cleaning error logs for rules applying utilities

Removed perror logs from main utilities files. Moved error logs
inside /utils/common.c. Errors are logged from I/O operations and
applying rules/cipso from files.
(cherry picked from commit bcaf9018f41809cb93aaccf9e9fb49b59750dc7e)
Add smack_label_length() function

Kernel does not validate the Smack label - instead the label will be
cut on the first incorrect character (after parsing at least one
correct character).

This function gives the user possibility to verify the correctness
of the Smack label before use and calculate labels length.

Additionally, all string length calculations are replaces with this
function to make implementation safer.

[jarkko.sakkinen@linux.intel.com:
 did some modifications:
 - smack_is_label_valid() -> smack_label_length()
 - libsmack.c:
   * return length
   * loop invariant had off-by-one error
   * cosmetic: "++i" not "i++"
 - libsmack.h:
   * updated documentation
   * cosmetic: formatting errors in  @param and @return]
(cherry picked from commit 8b083a8c67219c5d1dbfbf2ad1082c1954f9c9fa)