mirror of
https://github.com/SELinuxProject/selinux
synced 2024-12-22 14:02:17 +00:00
Genfscon 'dash' issue
On Tue, 2008-10-14 at 02:00 +0000, korkishko Tymur wrote: > I have checked policy_parse.y. It has following rule for genfscon: > > genfs_context_def : GENFSCON identifier path '-' identifier security_context_def > {if (define_genfs_context(1)) return -1;} > | GENFSCON identifier path '-' '-' {insert_id("-", 0);} security_context_def > {if (define_genfs_context(1)) return -1;} > | GENFSCON identifier path security_context_def > {if (define_genfs_context(0)) return -1;} > > The rule for path definition (in policy_scan.l) has already included '-' (dash): > > "/"({alnum}|[_.-/])* { return(PATH); } > > In my understanding (maybe wrong), path is parsed first (and path might include '-') and only then separate '-' is parsed. > But it still produces an error if path definition is correct and includes '-'. > > Any ideas/patches how to fix grammar rules are welcomed. This looks like a bug in policy_scan.l - we are not escaping (via backslash) special characters in the pattern and thus the "-" (dash) is being interpreted rather than taken literally. The same would seemingly apply for "." (dot), and would seem relevant not only to PATH but also for IDENTIFIER. The patch below seems to fix this issue for me:
This commit is contained in:
parent
345fb4a99b
commit
d5286d7169
@ -207,8 +207,8 @@ policycap |
|
||||
POLICYCAP { return(POLICYCAP); }
|
||||
permissive |
|
||||
PERMISSIVE { return(PERMISSIVE); }
|
||||
"/"({alnum}|[_.-/])* { return(PATH); }
|
||||
{letter}({alnum}|[_-])*([.]?({alnum}|[_-]))* { return(IDENTIFIER); }
|
||||
"/"({alnum}|[_\.\-/])* { return(PATH); }
|
||||
{letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))* { return(IDENTIFIER); }
|
||||
{digit}+ { return(NUMBER); }
|
||||
{digit}{1,3}(\.{digit}{1,3}){3} { return(IPV4_ADDR); }
|
||||
{hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])* { return(IPV6_ADDR); }
|
||||
|
Loading…
Reference in New Issue
Block a user