lintian: r897 - in trunk: checks debian testset testset/maintainer-scripts/debian
Author: rra
Date: 2007-06-05 05:25:57 +0200 (Tue, 05 Jun 2007)
New Revision: 897
Modified:
trunk/checks/scripts
trunk/checks/scripts.desc
trunk/debian/changelog
trunk/testset/maintainer-scripts/debian/postinst
trunk/testset/tags.maintainer-scripts
Log:
+ [RA] Diagnose direct modifications to /etc/services, /etc/protocols,
/etc/rpc, and /etc/inetd.conf in maintainer scripts. (Yes, an
eight-year-old bug!) (Closes: #32532)
Modified: trunk/checks/scripts
===================================================================
--- trunk/checks/scripts 2007-06-05 02:41:48 UTC (rev 896)
+++ trunk/checks/scripts 2007-06-05 03:25:57 UTC (rev 897)
@@ -601,18 +601,34 @@
tag "possible-bashism-in-maintainer-script", "$file:$. \'$match\'";
}
}
- if (/invoke-rc.d.*\|\| exit 0/) {
- tag "maintainer-script-hides-init-failure", "$file:$.";
+ if (!$cat_string) {
+ if (/invoke-rc.d.*\|\| exit 0/) {
+ tag "maintainer-script-hides-init-failure", "$file:$.";
+ }
+ if (m,/usr/share/debconf/confmodule,) {
+ $saw_debconf = 1;
+ }
+ if (m/^\s*read(?:\s|\z)/ && !$saw_debconf) {
+ tag "read-in-maintainer-script", "$file:$.";
+ }
+ if (m,^\s*rm\s+(.*\s)?/dev/,) {
+ tag "maintainer-script-removes-device-files", "$file:$.";
+ }
+ if (m,>\s*(/etc/(?:services|protocols|rpc))(\s|\Z),) {
+ tag "maintainer-script-modifies-netbase-managed-file", "$file:$. $1";
+ }
+ if (m,^\s*(?:cp|mv)\s.*(/etc/(?:services|protocols|rpc))\s*$,) {
+ tag "maintainer-script-modifies-netbase-managed-file", "$file:$. $1";
+ }
+ if (m,>\s*/etc/inetd\.conf(\s|\Z),) {
+ tag "maintainer-script-modifies-inetd-conf", "$file:$."
+ unless Dep::implies($deps{provides}, Dep::parse('inet-superserver'));
+ }
+ if (m,^\s*(?:cp|mv)\s+(?:.*\s)?/etc/inetd\.conf\s*$,) {
+ tag "maintainer-script-modifies-inetd-conf", "$file:$."
+ unless Dep::implies($deps{provides}, Dep::parse('inet-superserver'));
+ }
}
- if (m,/usr/share/debconf/confmodule,) {
- $saw_debconf = 1;
- }
- if (m/^\s*read(?:\s|\z)/ && !$saw_debconf && !$cat_string) {
- tag "read-in-maintainer-script", "$file:$.";
- }
- if (m,^\s*rm\s+(.*\s)?/dev/, && !$cat_string) {
- tag "maintainer-script-removes-device-files", "$file:$.";
- }
}
if (m,\bsuidregister\b,) {
tag "suidregister-used-in-maintainer-script", "$file";
Modified: trunk/checks/scripts.desc
===================================================================
--- trunk/checks/scripts.desc 2007-06-05 02:41:48 UTC (rev 896)
+++ trunk/checks/scripts.desc 2007-06-05 03:25:57 UTC (rev 897)
@@ -389,3 +389,18 @@
.
instead.
Ref: http://wiki.debian.org/DpkgConffileHandling
+
+Tag: maintainer-script-modifies-netbase-managed-file
+Type: error
+Info: The maintainer script modifies at least one of the files
+ <tt>/etc/services</tt>, <tt>/etc/protocols</tt>, and <tt>/etc/rpc</tt>,
+ which are managed by the netbase package. Instead of doing this, please
+ file a wishlist bug against netbase to have an appropriate entry added.
+Ref: policy 10.7.4
+
+Tag: maintainer-script-modifies-inetd-conf
+Type: error
+Info: The maintainer script modifies <tt>/etc/inetd.conf</tt> directly.
+ This file must not be modified directly; instead, use the
+ <tt>update-inetd</tt> script or the <tt>DebianNet.pm</tt> Perl module.
+Ref: policy 10.7.4
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2007-06-05 02:41:48 UTC (rev 896)
+++ trunk/debian/changelog 2007-06-05 03:25:57 UTC (rev 897)
@@ -41,6 +41,9 @@
not written in shell.
+ [RA] Diagnose maintainer scripts looking at /var/lib/dpkg/status
directly. Thanks, Guillem Jover. (Closes: #426628)
+ + [RA] Diagnose direct modifications to /etc/services, /etc/protocols,
+ /etc/rpc, and /etc/inetd.conf in maintainer scripts. (Yes, an
+ eight-year-old bug!) (Closes: #32532)
* checks/version-substvars{.desc,}:
+ [RA] Add a check for deprecated ${Source-Version} substvars. Patch
from Guillem Jover. (Closes: #427577)
@@ -48,7 +51,7 @@
* frontend/lintian-info:
+ [CW] Fix uninitialized value warning after reading a blank line.
- -- Russ Allbery <rra@debian.org> Mon, 04 Jun 2007 19:28:29 -0700
+ -- Russ Allbery <rra@debian.org> Mon, 04 Jun 2007 20:25:15 -0700
lintian (1.23.30) unstable; urgency=low
Modified: trunk/testset/maintainer-scripts/debian/postinst
===================================================================
--- trunk/testset/maintainer-scripts/debian/postinst 2007-06-05 02:41:48 UTC (rev 896)
+++ trunk/testset/maintainer-scripts/debian/postinst 2007-06-05 03:25:57 UTC (rev 897)
@@ -78,3 +78,18 @@
# recipe from the dpkg wiki that should be replaced with dpkg-query.
sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
/var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
Modified: trunk/testset/tags.maintainer-scripts
===================================================================
--- trunk/testset/tags.maintainer-scripts 2007-06-05 02:41:48 UTC (rev 896)
+++ trunk/testset/tags.maintainer-scripts 2007-06-05 03:25:57 UTC (rev 897)
@@ -8,6 +8,11 @@
E: maintainer-scripts: interpreter-without-predep control/config #!/usr/bin/python
E: maintainer-scripts: maintainer-script-calls-init-script-directly prerm:54
E: maintainer-scripts: maintainer-script-does-not-check-for-existence-of-wm-menu-config postinst:31
+E: maintainer-scripts: maintainer-script-modifies-inetd-conf postinst:91
+E: maintainer-scripts: maintainer-script-modifies-inetd-conf postinst:92
+E: maintainer-scripts: maintainer-script-modifies-netbase-managed-file postinst:83 /etc/services
+E: maintainer-scripts: maintainer-script-modifies-netbase-managed-file postinst:84 /etc/protocols
+E: maintainer-scripts: maintainer-script-modifies-netbase-managed-file postinst:85 /etc/rpc
E: maintainer-scripts: maintainer-script-removes-device-files postrm:39
E: maintainer-scripts: maintainer-script-removes-device-files postrm:40
E: maintainer-scripts: maintainer-script-uses-dpkg-status-directly postinst
Reply to: