/* A tunable. */
struct _tunable
{
- const char *name; /* Internal name of the tunable. */
+ const char name[TUNABLE_NAME_MAX]; /* Internal name of the tunable. */
tunable_type_t type; /* Data type of the tunable. */
tunable_val_t val; /* The value. */
bool initialized; /* Flag to indicate that the tunable is
target module if the value is
considered unsafe. */
/* Compatibility elements. */
- const char *env_alias; /* The compatibility environment
+ const char env_alias[TUNABLE_ALIAS_MAX]; /* The compatibility environment
variable name. */
};
tunable=""
ns=""
top_ns=""
+ max_name_len=0
+ max_alias_len=0
}
# Skip over blank lines and comments.
maxvals[top_ns,ns,tunable] = max_of[types[top_ns,ns,tunable]]
}
if (!env_alias[top_ns,ns,tunable]) {
- env_alias[top_ns,ns,tunable] = "NULL"
+ env_alias[top_ns,ns,tunable] = "{0}"
}
if (!security_level[top_ns,ns,tunable]) {
security_level[top_ns,ns,tunable] = "SXID_ERASE"
}
+ len = length(top_ns"."ns"."tunable)
+ if (len > max_name_len)
+ max_name_len = len
tunable = ""
}
}
else if (attr == "env_alias") {
env_alias[top_ns,ns,tunable] = sprintf("\"%s\"", val)
+ len = length(val)
+ if (len > max_alias_len)
+ max_alias_len = len
}
else if (attr == "security_level") {
if (val == "SXID_ERASE" || val == "SXID_IGNORE" || val == "NONE") {
print "\n#ifdef TUNABLES_INTERNAL"
# Internal definitions.
+ print "# define TUNABLE_NAME_MAX " (max_name_len + 1)
+ print "# define TUNABLE_ALIAS_MAX " (max_alias_len + 1)
print "# include \"dl-tunable-types.h\""
# Finally, the tunable list.
print "static tunable_t tunable_list[] attribute_relro = {"