lintian: r598 - in trunk: checks collection debian lib
Author: rra
Date: 2006-04-01 08:46:55 +0200 (Sat, 01 Apr 2006)
New Revision: 598
Modified:
trunk/checks/manpages
trunk/checks/po-debconf
trunk/collection/objdump-info
trunk/debian/changelog
trunk/lib/Util.pm
Log:
* checks/manpages:
+ [RA] Use system_env instead of system and sanitize the environment
before running man -l out of caution and to avoid extraneous output
when CDPATH is set. Reported by Marc Haber. (Closes: #360217)
* checks/po-debconf:
+ [RA] Use system_env instead of system out of caution and to avoid
extraneous output when CDPATH is set.
* collection/objdump-info:
+ [RA] Unset CDPATH before running cd to avoid strange effects from
the user's environment.
* lib/Util.pm:
+ [RA] Add system_env, like system but sanitizing the environment.
Modified: trunk/checks/manpages
===================================================================
--- trunk/checks/manpages 2006-04-01 06:01:57 UTC (rev 597)
+++ trunk/checks/manpages 2006-04-01 06:46:55 UTC (rev 598)
@@ -235,7 +235,7 @@
# negatives. When man-db is fixed, this limitation should be
# removed.
if ($path =~ m,/man/man\d/,) {
- if (system("lexgrog unpacked/\Q$file\E >/dev/null 2>&1")) {
+ if (system_env("lexgrog unpacked/\Q$file\E >/dev/null 2>&1")) {
tag "manpage-has-bad-whatis-entry", "$file";
}
}
@@ -244,14 +244,22 @@
# parent directory before running man so that .so directives are
# processed properly. (Yes, there are man pages that include other
# pages with .so but aren't simple links; rbash, for instance.)
- my $cmd;
- if ($file =~ m,^(.*)/(man\d/.*)$,) {
- $cmd = "cd unpacked/\Q$1\E && LANG=C man -l \Q$2\E";
- } else {
- $cmd = "LANG=C man -l unpacked/\Q$file\E";
- }
- open MANERRS, '-|', "($cmd >/dev/null) 2>&1"
- or fail("cannot run man -l: $!");
+ my $cmd;
+ if ($file =~ m,^(.*)/(man\d/.*)$,) {
+ $cmd = "cd unpacked/\Q$1\E && man -l \Q$2\E";
+ } else {
+ $cmd = "man -l unpacked/\Q$file\E";
+ }
+ my $pid = open MANERRS, '-|';
+ if (not defined $pid) {
+ fail("cannot run man -l: $!");
+ } elsif ($pid == 0) {
+ my %newenv = (LANG => 'C', PATH => $ENV{PATH});
+ undef %ENV;
+ %ENV = %newenv;
+ exec "($cmd >/dev/null) 2>&1"
+ or fail("cannot run man -l: $!");
+ }
while (<MANERRS>) {
# ignore progress information from man
next if /^Reformatting/;
Modified: trunk/checks/po-debconf
===================================================================
--- trunk/checks/po-debconf 2006-04-01 06:01:57 UTC (rev 597)
+++ trunk/checks/po-debconf 2006-04-01 06:46:55 UTC (rev 598)
@@ -76,8 +76,8 @@
if (-x "/usr/bin/msgcmp" && -x "/usr/share/intltool-debian/intltool-update" ) {
if ($missing_files == 0) {
$ENV{"INTLTOOL_EXTRACT"} ||= "/usr/share/intltool-debian/intltool-extract";
- system("cd debfiles/po && /usr/share/intltool-debian/intltool-update --gettext-package=test --pot");
- system("/usr/bin/msgcmp debfiles/po/test.pot debfiles/po/templates.pot >/dev/null 2>&1") == 0
+ system_env("cd debfiles/po && /usr/share/intltool-debian/intltool-update --gettext-package=test --pot");
+ system_env("/usr/bin/msgcmp debfiles/po/test.pot debfiles/po/templates.pot >/dev/null 2>&1") == 0
or tag "newer-debconf-templates";
}
} else {
@@ -106,7 +106,7 @@
}
tag "unknown-encoding-in-po-file", "debian/po/$file"
unless length($charset);
- system("msgfmt -o /dev/null debfiles/po/$file 2>/dev/null") == 0
+ system_env("msgfmt -o /dev/null debfiles/po/$file 2>/dev/null") == 0
or tag "invalid-po-file", "debian/po/$file";
}
Modified: trunk/collection/objdump-info
===================================================================
--- trunk/collection/objdump-info 2006-04-01 06:01:57 UTC (rev 597)
+++ trunk/collection/objdump-info 2006-04-01 06:46:55 UTC (rev 598)
@@ -30,6 +30,7 @@
exit 2
fi
+CDPATH=
cd unpacked
rm -f ../objdump-info
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2006-04-01 06:01:57 UTC (rev 597)
+++ trunk/debian/changelog 2006-04-01 06:46:55 UTC (rev 598)
@@ -14,14 +14,28 @@
are now too many combinations to list completely.
+ [RA] Catch build dependencies on X metapackages, based on a patch by
Josh Triplett. (Partially addresses #347169)
+ * checks/manpages:
+ + [RA] Use system_env instead of system and sanitize the environment
+ before running man -l out of caution and to avoid extraneous output
+ when CDPATH is set. Reported by Marc Haber. (Closes: #360217)
+ * checks/po-debconf:
+ + [RA] Use system_env instead of system out of caution and to avoid
+ extraneous output when CDPATH is set.
* checks/scripts.desc:
+ [RA] Change the check for broken error handling with invoke-rc.d to
maintainer-script-hides-init-failure to be more generic and explain
what the test looks at. Add the script name and line number and fix
a typo. Thanks, Marc Haber. (Closes: #360214, #360216)
- -- Russ Allbery <rra@debian.org> Fri, 31 Mar 2006 22:00:45 -0800
+ * collection/objdump-info:
+ + [RA] Unset CDPATH before running cd to avoid strange effects from
+ the user's environment.
+ * lib/Util.pm:
+ + [RA] Add system_env, like system but sanitizing the environment.
+
+ -- Russ Allbery <rra@debian.org> Fri, 31 Mar 2006 22:40:32 -0800
+
lintian (1.23.16) unstable; urgency=low
The "What's this Russ guy up to?" release
Modified: trunk/lib/Util.pm
===================================================================
--- trunk/lib/Util.pm 2006-04-01 06:01:57 UTC (rev 597)
+++ trunk/lib/Util.pm 2006-04-01 06:46:55 UTC (rev 598)
@@ -31,7 +31,8 @@
slurp_entire_file
get_file_md5
file_is_encoded_in_non_utf8
- fail);
+ fail
+ system_env);
use FileHandle;
use Pipeline;
@@ -207,6 +208,23 @@
return 0;
}
+# Just like system, except cleanses the environment first to avoid any strange
+# side effects due to the user's environment.
+sub system_env {
+ my @whitelist = qw(PATH INTLTOOL_EXTRACT);
+ my %newenv = map { exists $ENV{$_} ? ($_ => $ENV{$_}) : () } @whitelist;
+ my $pid = fork;
+ if (not defined $pid) {
+ return -1;
+ } elsif ($pid == 0) {
+ %ENV = %newenv;
+ exec @_ or die("exec of $_[0] failed: $!\n");
+ } else {
+ waitpid $pid, 0;
+ return $?;
+ }
+}
+
# ------------------------
sub fail {
Reply to: