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

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: