[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

checks/scripts / checkbashsims updates



Hi,

Thanks for adding the set of bashism checks from checkbashisms to
lintian recently. As a result of the recent bugs that people have been
filing on other packages using checkbashsims output, a few issues have
surfaced - one with a check that originated in the patch, and a couple
that were already in lintian, just for balance. :-)

Please let me know how you'd prefer to handle these, and any such issues
that arise in future. I'm more than happy to simply provide a list (as
below), send patches to the list or file bugs against lintian with
patches.

The first issue is from the checkbashisms side:

'(?<!\$)\(\(',               # '((' should be '$(('

This will also match constructs such as "if ((foo || bar) && baz)". I've
tightened the expression in checkbashisms SVN to be '(?<!\$)\(\(.*\)\)'.

The second issue that was highlighted is the check for arguments being
passed to scripts that are sourced (i.e. ". foo bar"). There are a
number of constructs that the current check flags, which so far as I can
tell are all legitimate:

        . ${sysconfdir}/pop3d; \
        . ${sysconfdir}/pop3d-ssl ; \
        . `dirname $0`/guilt
        
I've modified the check to:

        if (not $found and m/^\s*(\.\s+[^\s;]+\s+([^\s]+))/) {

which allows all of the above. The only problem I've found with it is
that constructs such as

        . `foo bar` `foobar baz`

aren't flagged, but IMHO that's the lesser of two evils.

Finally, script_is_evil_and_wrong() allows ";exec foo" but not "; exec
foo". I'm assuming this was a simple oversight, as the two forms are
equivalent.

Adam


Reply to: