ports/87498: Additional quoting checks for portlint
Bill Fenner
fenner at research.att.com
Sat Oct 15 23:30:13 UTC 2005
>Number: 87498
>Category: ports
>Synopsis: Additional quoting checks for portlint
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Oct 15 23:30:11 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Bill Fenner
>Release: FreeBSD 4.9-RELEASE i386
>Organization:
AT&T Labs - Research
>Environment:
System: FreeBSD fenestro.dyndns.org 4.9-RELEASE FreeBSD 4.9-RELEASE #8: Sun Jun 27 11:22:48 PDT 2004 root at fenestro.dyndns.org:/usr/obj/usr/src/sys/FENESTRO i386
(yes, I know, it's pathetic, but irrelevant)
>Description:
We've been having more and more problems caused by quoting,
particularly because of DEPRECATED's obscure requirements.
ports/87396 makes it so that bsd.port.mk won't have any
more quoting problems, but I understand that bsd.port.mk
patches are never "no-brainers" to commit, so until then,
having a portlint that knows the rules will help.
>How-To-Repeat:
Use BROKEN= "Doesn't work" and
DEPRECATED=${BROKEN} and type
make TRYBROKEN=YES check-sanity
or
FORBIDDEN= http://www.site.com/vulnerable;strangeurltoo
>Fix:
This patch requires quotes around all of BROKEN, FORBIDDEN,
MANUAL_PACKAGE_BUILD, NO_CDROM, NO_PACKAGE, RESTRICTED.
It also enforces the obscure rules about DEPRECATED: it needs
either no quotes or two sets, so if it's set to ${BROKEN}
it needs to be set to "${BROKEN}", (since BROKEN has one set).
cvs diff: Diffing .
cvs diff: Diffing src
Index: src/portlint.pl
===================================================================
RCS file: /home/ncvs/ports/devel/portlint/src/portlint.pl,v
retrieving revision 1.76
diff -u -r1.76 portlint.pl
--- src/portlint.pl 9 Oct 2005 18:52:58 -0000 1.76
+++ src/portlint.pl 14 Oct 2005 18:55:52 -0000
@@ -1188,13 +1188,32 @@
}
#
- # whole file: BROKEN
+ # whole file: BROKEN et al.
#
- print "OK: checking BROKEN.\n" if ($verbose);
- if ($whole =~ /\nBROKEN[+?]?=[ \t][^"]+\w+/) {
+ my($var);
+ foreach $var qw(BROKEN FORBIDDEN MANUAL_PACKAGE_BUILD NO_CDROM NO_PACKAGE RESTRICTED) {
+ print "OK: checking ${var}.\n" if ($verbose);
+ if ($whole =~ /\n${var}[+?]?=[ \t]?[^"]+\w+/) {
+ my $lineno = &linenumber($`);
+ &perror("WARN: $file [$lineno]: ${var} messages should be ".
+ "quoted.");
+ }
+ }
+
+ #
+ # whole file: DEPRECATED
+ #
+ print "OK: checking DEPRECATED.\n" if ($verbose);
+ if ($whole =~ /\nDEPRECATED[+?]?=[ \t]*"/ &&
+ $whole !~ /\nDEPRECATED[+?]?=[ \t]*"\$\{BROKEN\}"/) {
+ my $lineno = &linenumber($`);
+ &perror("WARN: $file [$lineno]: DEPRECATED messages should not ".
+ "be quoted unless they are exactly \"\${BROKEN}\".");
+ }
+ if ($whole =~ /\nDEPRECATED[+?]?=[^"]*\$\{BROKEN\}/) {
my $lineno = &linenumber($`);
- &perror("WARN: $file [$lineno]: BROKEN messages should be ".
- "quoted.");
+ &perror("WARN: $file [$lineno]: \"\${BROKEN}\" must be quoted ".
+ "when it is the source of DEPRECATED.");
}
#
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list