"gcc -Wwrite-strings" reported warnings when using hashtab_search (from
libsepol) with string literals as its second parameter is a non-constant
string.
Indeed /usr/include/sepol/policydb/hashtab.h contains:
typedef char *hashtab_key_t;
/* ... */
extern hashtab_datum_t hashtab_search(hashtab_t h, const hashtab_key_t k);
This means the second parameter is "char *const k", not "const char *k".
As a consequence:
* Casting to "const hashtab_key_t" leads to misunderstanding the code.
* "const char*" variables need to be explicitly casted to "char*" or
"hashtab_key_t" before calling hashtab_search.
* When using "gcc -Wwrite-strings", literal strings need to be casted to
"char*" or "hashtab_key_t" before calling hashtab_search.
* "gcc -Wcast-qual" reports an awful amount of warnings due to
const-to-nonconst pointer casts.
Add missing casts to hashtab_key_t to help finding real bugs in
setools/libqpol with gcc flags.
The declaration of fstat was missing. "gcc -Wall" reported:
libqpol/policy.c: In function 'qpol_policy_open_from_file_opt':
libqpol/policy.c:1060:3: warning: implicit declaration of function
'fstat' [-Wimplicit-function-declaration]
if (fstat(fd, &sb) < 0) {
^
"gcc -Wformat" needs printing functions to be marked with a format
attribute to be able to work. Add this attribute to some functions in
libqpol, found with "gcc -Werror=missing-format-attribute"
gcc documentation about format attribute:
https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html