Message ID | 20200505190151.28871-1-cgzones@googlemail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | sepolgen: parse gen_tunable as bool | expand |
On Tue, May 5, 2020 at 3:03 PM Christian Göttsche <cgzones@googlemail.com> wrote: > > Currently sepolgen-ifgen parses a gen_tunable statement as interface > and reports: > > Missing interface definition for gen_tunable > > Add grammar for gen_tunable statements in the refparser > > Signed-off-by: Christian Göttsche <cgzones@googlemail.com> This looks correct to me but I don't see that warning/error when running sepolgen-ifgen without this patch. Is this reproducible? > --- > python/sepolgen/src/sepolgen/refparser.py | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/python/sepolgen/src/sepolgen/refparser.py b/python/sepolgen/src/sepolgen/refparser.py > index 2e521a0f..be7e7890 100644 > --- a/python/sepolgen/src/sepolgen/refparser.py > +++ b/python/sepolgen/src/sepolgen/refparser.py > @@ -126,6 +126,7 @@ tokens = ( > 'GEN_REQ', > 'TEMPLATE', > 'GEN_CONTEXT', > + 'GEN_TUNABLE', > # m4 > 'IFELSE', > 'IFDEF', > @@ -192,6 +193,7 @@ reserved = { > 'gen_require' : 'GEN_REQ', > 'template' : 'TEMPLATE', > 'gen_context' : 'GEN_CONTEXT', > + 'gen_tunable' : 'GEN_TUNABLE', > # M4 > 'ifelse' : 'IFELSE', > 'ifndef' : 'IFNDEF', > @@ -518,6 +520,7 @@ def p_policy_stmt(p): > | range_transition_def > | role_transition_def > | bool > + | gen_tunable > | define > | initial_sid > | genfscon > @@ -844,6 +847,17 @@ def p_bool(p): > b.state = False > p[0] = b > > +def p_gen_tunable(p): > + '''gen_tunable : GEN_TUNABLE OPAREN IDENTIFIER COMMA TRUE CPAREN > + | GEN_TUNABLE OPAREN IDENTIFIER COMMA FALSE CPAREN''' > + b = refpolicy.Bool() > + b.name = p[3] > + if p[5] == "true": > + b.state = True > + else: > + b.state = False > + p[0] = b > + > def p_conditional(p): > ''' conditional : IF OPAREN cond_expr CPAREN OBRACE interface_stmts CBRACE > | IF OPAREN cond_expr CPAREN OBRACE interface_stmts CBRACE ELSE OBRACE interface_stmts CBRACE > -- > 2.26.2 >
Am Mi., 27. Mai 2020 um 17:04 Uhr schrieb Stephen Smalley <stephen.smalley.work@gmail.com>: > > On Tue, May 5, 2020 at 3:03 PM Christian Göttsche > <cgzones@googlemail.com> wrote: > > > > Currently sepolgen-ifgen parses a gen_tunable statement as interface > > and reports: > > > > Missing interface definition for gen_tunable > > > > Add grammar for gen_tunable statements in the refparser > > > > Signed-off-by: Christian Göttsche <cgzones@googlemail.com> > > This looks correct to me but I don't see that warning/error when > running sepolgen-ifgen without this patch. > Is this reproducible? > It should be when running in verbose mode. (running against Refpolicy) > > --- > > python/sepolgen/src/sepolgen/refparser.py | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/python/sepolgen/src/sepolgen/refparser.py b/python/sepolgen/src/sepolgen/refparser.py > > index 2e521a0f..be7e7890 100644 > > --- a/python/sepolgen/src/sepolgen/refparser.py > > +++ b/python/sepolgen/src/sepolgen/refparser.py > > @@ -126,6 +126,7 @@ tokens = ( > > 'GEN_REQ', > > 'TEMPLATE', > > 'GEN_CONTEXT', > > + 'GEN_TUNABLE', > > # m4 > > 'IFELSE', > > 'IFDEF', > > @@ -192,6 +193,7 @@ reserved = { > > 'gen_require' : 'GEN_REQ', > > 'template' : 'TEMPLATE', > > 'gen_context' : 'GEN_CONTEXT', > > + 'gen_tunable' : 'GEN_TUNABLE', > > # M4 > > 'ifelse' : 'IFELSE', > > 'ifndef' : 'IFNDEF', > > @@ -518,6 +520,7 @@ def p_policy_stmt(p): > > | range_transition_def > > | role_transition_def > > | bool > > + | gen_tunable > > | define > > | initial_sid > > | genfscon > > @@ -844,6 +847,17 @@ def p_bool(p): > > b.state = False > > p[0] = b > > > > +def p_gen_tunable(p): > > + '''gen_tunable : GEN_TUNABLE OPAREN IDENTIFIER COMMA TRUE CPAREN > > + | GEN_TUNABLE OPAREN IDENTIFIER COMMA FALSE CPAREN''' > > + b = refpolicy.Bool() > > + b.name = p[3] > > + if p[5] == "true": > > + b.state = True > > + else: > > + b.state = False > > + p[0] = b > > + > > def p_conditional(p): > > ''' conditional : IF OPAREN cond_expr CPAREN OBRACE interface_stmts CBRACE > > | IF OPAREN cond_expr CPAREN OBRACE interface_stmts CBRACE ELSE OBRACE interface_stmts CBRACE > > -- > > 2.26.2 > >
diff --git a/python/sepolgen/src/sepolgen/refparser.py b/python/sepolgen/src/sepolgen/refparser.py index 2e521a0f..be7e7890 100644 --- a/python/sepolgen/src/sepolgen/refparser.py +++ b/python/sepolgen/src/sepolgen/refparser.py @@ -126,6 +126,7 @@ tokens = ( 'GEN_REQ', 'TEMPLATE', 'GEN_CONTEXT', + 'GEN_TUNABLE', # m4 'IFELSE', 'IFDEF', @@ -192,6 +193,7 @@ reserved = { 'gen_require' : 'GEN_REQ', 'template' : 'TEMPLATE', 'gen_context' : 'GEN_CONTEXT', + 'gen_tunable' : 'GEN_TUNABLE', # M4 'ifelse' : 'IFELSE', 'ifndef' : 'IFNDEF', @@ -518,6 +520,7 @@ def p_policy_stmt(p): | range_transition_def | role_transition_def | bool + | gen_tunable | define | initial_sid | genfscon @@ -844,6 +847,17 @@ def p_bool(p): b.state = False p[0] = b +def p_gen_tunable(p): + '''gen_tunable : GEN_TUNABLE OPAREN IDENTIFIER COMMA TRUE CPAREN + | GEN_TUNABLE OPAREN IDENTIFIER COMMA FALSE CPAREN''' + b = refpolicy.Bool() + b.name = p[3] + if p[5] == "true": + b.state = True + else: + b.state = False + p[0] = b + def p_conditional(p): ''' conditional : IF OPAREN cond_expr CPAREN OBRACE interface_stmts CBRACE | IF OPAREN cond_expr CPAREN OBRACE interface_stmts CBRACE ELSE OBRACE interface_stmts CBRACE
Currently sepolgen-ifgen parses a gen_tunable statement as interface and reports: Missing interface definition for gen_tunable Add grammar for gen_tunable statements in the refparser Signed-off-by: Christian Göttsche <cgzones@googlemail.com> --- python/sepolgen/src/sepolgen/refparser.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+)