4.?bsd (and others?) lint bugs (with fixes)
Arthur David Olson
ado at elsie.UUCP
Tue Sep 25 10:30:06 AEST 1984
Bugged: /usr/bin/lint
Bugs: lint sometimes wrongly believes you've used a "-n" or "-p" option;
it gives a dumb error message if you use "-O";
it mishandles cases where "-p" is used with "-l".
Repeat by:
First bug:
cat << EOF > file.c
#include <stdio.h>
main()
{
printf("%s\n", "Hello");
printf("Goodbye\n");
}
EOF
lint -DNONSENSE file.c
lint -Dnonsense file.c
...and note that the two lint runs give different results.
Second bug:
echo 'main(){}' > file.c
lint -O file.c
...and note the spurious diagnostic.
Third bug:
cat << EOF > file.c
#include <stdio.h>
#include <curses.h>
main()
{
werase(stdscr);
}
EOF
lint file.c -lcurses
lint -p file.c -lcurses
...and note the spurious complaint about argument use
from the second lint run.
Analysis:
First bug:
The "/usr/bin/lint" script mistakes any argument of the form
"-*n*", even something like "-Dnonsense", for "-n".
Second bug:
The "/usr/bin/lint" script passes any "-O" argument to
"/lib/cpp", which has no idea what to do with it.
Third bug:
While two "pre-compiled" versions of "lint library files"
are maintained for "stdio" functions--one version to be used
when you say "lint -p", the other to be used when you leave
off the "-p"--there's only one version of such files for things
like the "curses" library.
Fix: I recommend copying "/usr/bin/lint" to "/usr/local/lint"
(or whatever your "local" directory is), then applying these
edits. The trade secret status of "/usr/bin/lint" precludes
posting things in a clearer way.
ed - lint << EOF
/-\*n\*/i
-[IDU]*) ;;
-l*) ;;
.
/IDOU/s//IDU/
/-l.*cat/c
-l*) case \$P in
port) ( /lib/cpp \$O \$LL/llib\$A |
\${L}1 -v\$X >> \$T ) 2>&1 ;;
*) cat \$LL/llib\$A.ln >> \$T ;;
esac ;;
.
/\*\.ln)/m/-\*)/
w
q
EOF
--
UNIX and Bugs are AT&T Bell Laboratories and Warner Brothers trademarks.
--
...decvax!seismo!umcp-cs!elsie!ado (301) 496-5688
DEC, VAX and Elsie are Digital Equipment Corp. and Borden's trademarks.
More information about the Comp.unix.wizards
mailing list