mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-09-02 15:25:27 +00:00
add parser subsystem reset functions
Signed-Off-By: Kees Cook <kees.cook@canonical.com>
This commit is contained in:
@@ -212,6 +212,8 @@ extern int force_complain;
|
|||||||
extern int regex_type;
|
extern int regex_type;
|
||||||
extern void pwarn(char *fmt, ...) __attribute__((__format__(__printf__, 1, 2)));
|
extern void pwarn(char *fmt, ...) __attribute__((__format__(__printf__, 1, 2)));
|
||||||
|
|
||||||
|
extern FILE *yyin;
|
||||||
|
extern void yyrestart(FILE *fp);
|
||||||
extern int yyparse(void);
|
extern int yyparse(void);
|
||||||
extern void yyerror(char *msg, ...);
|
extern void yyerror(char *msg, ...);
|
||||||
extern int yylex(void);
|
extern int yylex(void);
|
||||||
@@ -219,6 +221,7 @@ extern int yylex(void);
|
|||||||
/* parser_regex.c */
|
/* parser_regex.c */
|
||||||
extern int process_regex(struct codomain *cod);
|
extern int process_regex(struct codomain *cod);
|
||||||
extern int post_process_entry(struct cod_entry *entry);
|
extern int post_process_entry(struct cod_entry *entry);
|
||||||
|
extern void reset_regex(void);
|
||||||
|
|
||||||
/* parser_variable.c */
|
/* parser_variable.c */
|
||||||
extern int process_variables(struct codomain *cod);
|
extern int process_variables(struct codomain *cod);
|
||||||
@@ -257,6 +260,7 @@ extern void *get_set_var(const char *var);
|
|||||||
extern char *get_next_set_value(void **context);
|
extern char *get_next_set_value(void **context);
|
||||||
extern void dump_symtab(void);
|
extern void dump_symtab(void);
|
||||||
extern void dump_expanded_symtab(void);
|
extern void dump_expanded_symtab(void);
|
||||||
|
void free_symtabs(void);
|
||||||
|
|
||||||
/* parser_alias.c */
|
/* parser_alias.c */
|
||||||
extern int new_alias(const char *from, const char *to);
|
extern int new_alias(const char *from, const char *to);
|
||||||
@@ -293,3 +297,4 @@ extern void dump_policy(void);
|
|||||||
extern void dump_policy_hats(struct codomain *cod);
|
extern void dump_policy_hats(struct codomain *cod);
|
||||||
extern void dump_policy_names(void);
|
extern void dump_policy_names(void);
|
||||||
extern int die_if_any_regex(void);
|
extern int die_if_any_regex(void);
|
||||||
|
void free_policies(void);
|
||||||
|
@@ -42,17 +42,6 @@ static int compare_alias(const void *a, const void *b)
|
|||||||
return strcmp(a_name, b_name);
|
return strcmp(a_name, b_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct alias_rule *lookup_alias(const char *alias)
|
|
||||||
{
|
|
||||||
struct alias_rule tmp = { alias, NULL} , **lookup;
|
|
||||||
|
|
||||||
lookup = (struct alias_rule **) tfind(&tmp, alias_table, (comparison_fn_t) &compare_alias);
|
|
||||||
if (!lookup)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
return *lookup;
|
|
||||||
}
|
|
||||||
|
|
||||||
int new_alias(const char *from, const char *to)
|
int new_alias(const char *from, const char *to)
|
||||||
{
|
{
|
||||||
struct alias_rule *alias, **result;
|
struct alias_rule *alias, **result;
|
||||||
@@ -189,4 +178,5 @@ void free_aliases(void)
|
|||||||
{
|
{
|
||||||
if (alias_table)
|
if (alias_table)
|
||||||
tdestroy(alias_table, &free_alias);
|
tdestroy(alias_table, &free_alias);
|
||||||
|
alias_table = NULL;
|
||||||
}
|
}
|
||||||
|
@@ -723,3 +723,10 @@ void free_policy(struct codomain *cod)
|
|||||||
free(cod->dfa);
|
free(cod->dfa);
|
||||||
free(cod);
|
free(cod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void free_policies(void)
|
||||||
|
{
|
||||||
|
if (policy_list)
|
||||||
|
tdestroy(policy_list, (__free_fn_t)&free_policy);
|
||||||
|
policy_list = NULL;
|
||||||
|
}
|
||||||
|
@@ -642,6 +642,11 @@ out:
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset_regex(void)
|
||||||
|
{
|
||||||
|
aare_reset_matchflags();
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef UNIT_TEST
|
#ifdef UNIT_TEST
|
||||||
#define MY_TEST(statement, error) \
|
#define MY_TEST(statement, error) \
|
||||||
if (!(statement)) { \
|
if (!(statement)) { \
|
||||||
|
@@ -532,6 +532,13 @@ void dump_expanded_symtab(void)
|
|||||||
twalk(my_symtab, &dump_expanded_symtab_entry);
|
twalk(my_symtab, &dump_expanded_symtab_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void free_symtabs(void)
|
||||||
|
{
|
||||||
|
if (my_symtab)
|
||||||
|
tdestroy(my_symtab, (__free_fn_t)&free_symtab);
|
||||||
|
my_symtab = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef UNIT_TEST
|
#ifdef UNIT_TEST
|
||||||
#define MY_TEST(statement, error) \
|
#define MY_TEST(statement, error) \
|
||||||
if (!(statement)) { \
|
if (!(statement)) { \
|
||||||
|
Reference in New Issue
Block a user