1
/* $Id: parser_regex.c 565 2007-04-11 09:12:51Z jrjohansen $ */
1
/* $Id: parser_regex.c 1042 2007-11-29 18:06:53Z jrjohansen $ */
4
4
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
497
496
/* ix implies m but the apparmor module does not add m bit to
498
497
* dfa states like it does for pcre
500
if (entry->mode & AA_EXEC_INHERIT)
501
entry->mode |= AA_EXEC_MMAP;
499
if (((entry->mode >> AA_OTHER_SHIFT) & AA_EXEC_MODIFIERS) ==
501
entry->mode |= AA_EXEC_MMAP << AA_OTHER_SHIFT;
502
if (((entry->mode >> AA_USER_SHIFT) & AA_EXEC_MODIFIERS) ==
504
entry->mode |= AA_EXEC_MMAP << AA_USER_SHIFT;
502
506
if (!aare_add_rule(dfarules, tbuf, entry->mode))
508
if (entry->mode & (AA_LINK_BITS)) {
509
/* add the pair rule */
510
char lbuf[PATH_MAX + 8];
511
int perms = AA_LINK_BITS & entry->mode;
512
if (entry->link_name) {
513
sprintf(lbuf, "%s//%s", entry->name, entry->link_name);
515
perms |= LINK_TO_LINK_SUBSET(perms);
516
sprintf(lbuf, "%s///**", entry->name);
518
ptype = convert_aaregex_to_pcre(lbuf, 0, tbuf, PATH_MAX + 8);
519
if (ptype == ePatternInvalid)
521
if (!aare_add_rule(dfarules, tbuf, perms))
523
/* if (!aare_add_vec_rule(dfarules, perms,
528
if (entry->mode & AA_CHANGE_PROFILE) {
529
char lbuf[2*PATH_MAX + 8];
530
if (entry->namespace)
531
sprintf(lbuf, "%s//%s", entry->namespace, entry->name);
533
sprintf(lbuf, "%s", entry->name);
534
ptype = convert_aaregex_to_pcre(lbuf, 0, tbuf, 2*PATH_MAX + 8);
535
if (ptype == ePatternInvalid)
537
if (!aare_add_rule(dfarules, tbuf, AA_CHANGE_PROFILE))
508
543
int post_process_entries(struct codomain *cod)