179
180
#define FLAG_CHANGEHAT_1_4 2
180
181
#define FLAG_CHANGEHAT_1_5 3
181
extern int kernel_supports_network;
182
extern int net_af_max_override;
183
extern int flag_changehat_version;
184
extern int read_implies_exec;
185
extern dfaflags_t dfaflags;
186
183
extern int preprocess_only;
189
185
#define PATH_CHROOT_REL 0x1
190
186
#define PATH_NS_REL 0x2
227
223
#define list_last_entry(LIST, ENTRY) \
228
224
for ((ENTRY) = (LIST); (ENTRY) && (ENTRY)->next; (ENTRY) = (ENTRY)->next)
230
/* Some external definitions to make b0rken programs happy */
226
/* from parser_common.c */
227
extern int regex_type;
228
extern int perms_create;
229
extern int net_af_max_override;
230
extern int kernel_load;
231
extern int kernel_supports_network;
232
extern int flag_changehat_version;
233
extern int conf_verbose;
234
extern int conf_quiet;
235
extern int names_only;
237
extern int current_lineno;
238
extern dfaflags_t dfaflags;
231
239
extern char *progname;
232
240
extern char *subdomainbase;
233
241
extern char *profilename;
234
242
extern char *profile_namespace;
243
extern char *current_filename;
245
extern int read_implies_exec;
246
extern void pwarn(char *fmt, ...) __attribute__((__format__(__printf__, 1, 2)));
236
/* from parser_main */
248
/* from parser_main (cannot be used in tst builds) */
237
249
extern int force_complain;
238
extern int conf_quiet;
239
extern int conf_verbose;
240
extern int kernel_load;
241
extern int regex_type;
242
extern int perms_create;
243
250
extern struct timespec mru_tstamp;
244
251
extern void update_mru_tstamp(FILE *file);
245
extern void pwarn(char *fmt, ...) __attribute__((__format__(__printf__, 1, 2)));
253
/* provided by parser_lex.l (cannot be used in tst builds) */
247
254
extern FILE *yyin;
248
255
extern void yyrestart(FILE *fp);
249
256
extern int yyparse(void);
339
346
extern void dump_policy_names(void);
340
347
extern int die_if_any_regex(void);
341
348
void free_policies(void);
351
/* For the unit-test builds, we must include function stubs for stuff that
352
* only exists in the excluded object files; everything else should live
353
* in parser_common.c.
357
void yyerror(char *msg, ...)
363
vsnprintf(buf, sizeof(buf), msg, arg);
366
PERROR(_("AppArmor parser error: %s\n"), buf);
371
#define MY_TEST(statement, error) \
372
if (!(statement)) { \
373
PERROR("FAIL: %s\n", error); \