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

Bug#30985: Invalid perl in /usr/sbin/install-info



Package: dpkg
Version: 1.4.0.31

The Perl script "/usr/sbin/install-info" contains a construct which is
illegal in Perl.  From line 222:

do {
    last if !@work;
    $_= shift(@work);
    push(@head,$_);
} until (m/^\*\s*Menu:/i);

do { } is not a loop block (it just looks like one), and therefore the
"last" statement is not valid here.  This was triggered in my case by a
corrupted info "dir" file, which caused "@work" to end up empty, and the
script tried to execute the "last", and failed.

A better way of writing the loop in question might be:

while (@work) {
    push(@head, $_ = shift(@work));
    last if m/^\*\s*Menu:/i;
}

       Colm

-- 
Colm Buckley B.A. B.F. # Computer Science, Trinity College, Dublin 2, Ireland.
colm@tuatha.org | colm@lspace.org # +353 87 2469146 # whois cb3765
http://www.tuatha.org/~colm/ # finger colm@tuatha.org
Early bird gets the worm, but the second mouse gets the cheese.


Reply to: