[apparmor] [PATCH 4/6] parser: stop splitting the namespace from the named transition targets

Tyler Hicks tyhicks at canonical.com
Tue Mar 15 20:07:09 UTC 2016


On 2016-03-14 21:09:07, Seth Arnold wrote:
> On Mon, Mar 14, 2016 at 10:39:09PM -0500, Tyler Hicks wrote:
> > -		yyerror(_("Unknown error while parsing label: %s\n"), label);
> 
> > +			yyerror(_(err), label);
> 
> Does this change break the translator tools that gather strings to
> translate? (It's a nice cleanup otherwise.)

It does. Nice catch.

I've identified a small change to fix it.

> 
> >  	if (!*_name) {
> >  		free(*_ns);
> > -		yyerror(_("Memory allocation error."));
> > +		goto alloc_fail;
> >  	}
> > +
> > +	return true;
> > +
> > +alloc_fail:
> > +	err = "Memory allocation error.";
> > +	if (yyerr)
> > +		yyerror(_(err));
> > +	else
> > +		fprintf(stderr, "%s", _(err));
> > +
> > +	return false;
> 
> This appears to be a behaviour change beyond a cleanup -- previously it'd
> call yyerror() then return true. I suspect this is intentional but I
> wanted to call it out as more than a cleanup...

yyerror() actually calls exit() so we're not changing behavior here:

void yyerror(const char *msg, ...)
{
        va_list arg;

        va_start(arg, msg);
        vprintyyerror(msg, arg);
        va_end(arg);

        exit(1);
}

> 
> > +		if (!kernel_supports_stacking) {
> > +			bool stack;
> > +
> > +			if (!parse_label(&stack, &ns, &name,
> > +					 tbuf.c_str(), false)) {
> > +				return FALSE;
> > +			} else if (stack) {
> 
> I'm not a fan of this construct:
> 
> if (set_variable(&foo))
>   /* branch A */
> else if (foo)
>   /* branch B */
> 
> This actually makes branch B dependant upon both the return value of the
> function _and_ the variable but that's not obvious as the two are
> separated by some distance. (It's not much, here, but it's enough to be
> confusing.)

Do you prefer this instead?

if (set_variable(&foo))
  /* branch A */

if (foo)
  /* branch B */

Tyler

> 
> There's four cases of return-value and stack and it's not clear on first
> glance how many of them are handled explicitly.
> 
> > +					_("The current kernel does not support stacking of named transitions: %s\n"),
> > +					tbuf.c_str());
> > +				return FALSE;
> > +			}
> 
> 
> Thanks



> -- 
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20160315/02ec3f81/attachment.pgp>


More information about the AppArmor mailing list