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

lintian: r738 - in trunk: checks debian testset testset/scripts testset/scripts/debian



Author: rra
Date: 2006-09-04 01:17:09 +0200 (Mon, 04 Sep 2006)
New Revision: 738

Added:
   trunk/testset/scripts/debian/postinst
   trunk/testset/scripts/debian/postrm
   trunk/testset/scripts/init-lsb-broken
   trunk/testset/scripts/init-no-lsb
   trunk/testset/scripts/init-skeleton
Modified:
   trunk/checks/init.d
   trunk/checks/init.d.desc
   trunk/debian/changelog
   trunk/testset/scripts/debian/rules
   trunk/testset/scripts/debian/scripts.conffiles
   trunk/testset/tags.scripts
Log:
The "LSB init script" release
* checks/init.d{.desc,}:
  + [RA] Added a warning for init scripts missing an LSB keyword
    section, checks of the syntax of such a section if present, and
    some basic semantic checks of the easiest fields.  Based on initial
    work by Carlos Villegas.  (Closes: #377740)

Modified: trunk/checks/init.d
===================================================================
--- trunk/checks/init.d	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/checks/init.d	2006-09-03 23:17:09 UTC (rev 738)
@@ -23,6 +23,17 @@
 use Tags;
 use Util;
 
+# A list of valid LSB keywords.	 The value is 0 if optional and 1 if required.
+my %lsb_keywords = (provides		=> 1,
+		    'required-start'	=> 1,
+		    'required-stop'	=> 1,
+		    'should-start'	=> 0,
+		    'should-stop'	=> 0,
+		    'default-start'	=> 1,
+		    'default-stop'	=> 1,
+		    'short-description' => 1,
+		    'description'	=> 0);
+
 sub run {
 
 my $pkg = shift;
@@ -142,14 +153,84 @@
     if (-f $initd_file) {
 	# yes! check it...
 	open(IN,$initd_file) or fail("cannot open init.d file $initd_file: $!");
-	my %tag;
+	my (%tag, %lsb);
 	while (defined(my $l = <IN>)) {
+	    if ($l =~ m/^\#\#\# BEGIN INIT INFO/) {
+		if ($lsb{BEGIN}) {
+		    tag "init.d-script-has-duplicate-lsb-section", "/etc/init.d/$_";
+		    next;
+		}
+		$lsb{BEGIN} = 1;
+		my $last;
+
+		# We have an LSB keyword section.  Parse it and save the data
+		# in %lsb for analysis.
+		while (defined(my $l = <IN>)) {
+		    if ($l =~ /^\#\#\# END INIT INFO/) {
+			$lsb{END} = 1;
+			last;
+		    } elsif ($l !~ /^\#/) {
+			tag "init.d-script-has-unterminated-lsb-section", "/etc/init.d/$_:$.";
+			last;
+		    } elsif ($l =~ /^\# ([a-zA-Z-]+):\s*(.*?)\s*$/) {
+			my $keyword = lc $1;
+			my $value = $2;
+			tag "init.d-script-has-duplicate-lsb-keyword", "/etc/init.d/$_:$. $keyword"
+			    if $lsb{$keyword};
+			tag "init.d-script-has-unknown-lsb-keyword", "/etc/init.d/$_:$. $keyword"
+			    unless (defined ($lsb_keywords{$keyword}) || $keyword =~ /^x-/);
+			$lsb{$keyword} = $value;
+			$last = $keyword;
+		    } elsif ($l =~ /^\#(\t|  )/ && $last eq 'description') {
+			my $value = $l;
+			$value =~ s/^\#\s*//;
+			$lsb{description} .= ' ' . $value;
+		    } else {
+			tag "init.d-script-has-bad-lsb-line", "/etc/init.d/$_:$.";
+		    }
+		}
+	    }
+
 	    while ($l =~ s/(start|stop|restart|force-reload)//o) {
 		$tag{$1} = 1;
 	    }
-	}
+        }
 	close(IN);
 
+	# Make sure all of the required keywords are present.
+	if (not $lsb{BEGIN}) {
+	    tag "init.d-script-missing-lsb-section", "/etc/init.d/$_";
+	} else {
+	    for my $keyword (keys %lsb_keywords) {
+		if ($lsb_keywords{$keyword} && !$lsb{$keyword}) {
+		    tag "init.d-script-missing-lsb-keyword", "/etc/init.d/$_ $keyword";
+		}
+	    }
+	}
+
+	# Check the runlevels.
+	my %start;
+	if ($lsb{'default-start'}) {
+	    for my $runlevel (split (/\s+/, $lsb{'default-start'})) {
+		if ($runlevel =~ /^[sS0-6]$/) {
+		    $start{lc $runlevel} = 1;
+		} else {
+		    tag "init.d-script-has-bad-start-runlevel", "/etc/init.d/$_ $runlevel";
+		}
+	    }
+	}
+	if ($lsb{'default-stop'}) {
+	    for my $runlevel (split (/\s+/, $lsb{'default-stop'})) {
+		if ($runlevel =~ /^[sS0-6]$/) {
+		    if ($start{$runlevel}) {
+			tag "init.d-script-has-conflicting-start-stop", "/etc/init.d/$_ $runlevel";
+		    }
+		} else {
+		    tag "init.d-script-has-bad-stop-runlevel", "/etc/init.d/$_ $runlevel";
+		}
+	    }
+	}
+
 	# all tags included in file?
 	$tag{'start'} or tag "init.d-script-does-not-implement-required-option", "/etc/init.d/$_ start";
 	$tag{'stop'} or tag "init.d-script-does-not-implement-required-option", "/etc/init.d/$_ stop";

Modified: trunk/checks/init.d.desc
===================================================================
--- trunk/checks/init.d.desc	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/checks/init.d.desc	2006-09-03 23:17:09 UTC (rev 738)
@@ -74,3 +74,87 @@
  not registered in the <tt>postinst</tt> script. This is usually a bug,
  unless you omit the links intentionally for some reason or create the
  links some other way.
+
+Tag: init.d-script-has-duplicate-lsb-section
+Type: error
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: This <tt>/etc/init.d</tt> script has more than one LSB keyword
+ section.  These sections start with <tt>### BEGIN INIT INFO</tt> and end
+ with <tt>### END INIT INFO</tt>.  There should be only one such section
+ per init script.
+
+Tag: init.d-script-has-unterminated-lsb-section
+Type: error
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: This <tt>/etc/init.d</tt> script has an LSB keyword section starting
+ with <tt>### BEGIN INIT INFO</tt> but either has no matching <tt>### END
+ INIT INFO</tt> or has lines between those two markers that are not
+ comments.  The line number given is the first line that doesn't look like
+ part of an LSB keyword section.  There must be an end marker after all
+ the keyword settings and there must not be any lines between those
+ markers that do not begin with <tt>#</tt>.
+
+Tag: init.d-script-has-duplicate-lsb-keyword
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: The given keyword was set twice in the LSB keyword section in this
+ <tt>/etc/init.d</tt> script.  This is probably a mistake; the behavior of
+ setting the same keyword twice is undefined.
+
+Tag: init.d-script-has-unknown-lsb-keyword
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: The given keyword was set in the LSB keyword section in this
+ <tt>/etc/init.d</tt> script but isn't one of the known LSB keywords and
+ doesn't begin with <tt>X-</tt>.  One of the standard keywords may have
+ been misspelled.
+
+Tag: init.d-script-has-bad-lsb-line
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: This line in the LSB keyword section of an <tt>/etc/init.d</tt>
+ script doesn't match the required formatting of that section.  Note that
+ keyword settings must start with <tt>#</tt>, a single space, the keyword,
+ a colon, and some whitespace, followed by the value (if any).  Only the
+ Description keyword allows continuation lines, and continuation lines
+ must begin with <tt>#</tt> and either a tab or two or more spaces.
+
+Tag: init.d-script-missing-lsb-section
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: This <tt>/etc/init.d</tt> script does not have an LSB keyword
+ section (or the <tt>### BEGIN INIT INFO</tt> tag is incorrect).  This
+ section provides description and runlevel information in a standard
+ format and provides dependency information that can be used to
+ parallelize the boot process.  Please consider adding it.
+
+Tag: init.d-script-missing-lsb-keyword
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: This <tt>/etc/init.d</tt> script has an LSB keyword section, but it
+ is missing the given required LSB keyword.  If the value of this keyword
+ should be empty, please still include it in the LSB keyword section with
+ an empty value.
+
+Tag: init.d-script-has-bad-start-runlevel
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: The given runlevel specified in the Default-Start keyword of the LSB
+ keyword section of this <tt>/etc/init.d</tt> script isn't one of the
+ recognized standard runlevels (S, 0, 1, 2, 3, 4, 5, and 6).
+
+Tag: init.d-script-has-bad-stop-runlevel
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: The given runlevel specified in the Default-Stop keyword of the LSB
+ keyword section of this <tt>/etc/init.d</tt> script isn't one of the
+ recognized standard runlevels (S, 0, 1, 2, 3, 4, 5, and 6).
+
+Tag: init.d-script-has-conflicting-start-stop
+Type: warning
+Ref: http://wiki.debian.org/LSBInitScripts
+Info: The given runlevel was included in both the Default-Start and
+ Default-Stop keywords of the LSB keyword section of this
+ <tt>/etc/init.d</tt> script.  Since it doesn't make sense to both start
+ and stop a service in the same runlevel, there is probably an error in
+ one or the other of these keywords.

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/debian/changelog	2006-09-03 23:17:09 UTC (rev 738)
@@ -1,5 +1,7 @@
 lintian (1.23.24) UNRELEASED; urgency=low
 
+  The "LSB init script" release
+
   * checks/control-files:
     + [RA] perm2oct definition moved to Util.pm.
   * checks/cruft{.desc,}:
@@ -12,6 +14,11 @@
       error.  Thanks, Adeodato Simó.  (Closes: #384476)
   * checks/files:
     + [RA] perm2oct definition moved to Util.pm.
+  * checks/init.d{.desc,}:
+    + [RA] Added a warning for init scripts missing an LSB keyword
+      section, checks of the syntax of such a section if present, and
+      some basic semantic checks of the easiest fields.  Based on initial
+      work by Carlos Villegas.  (Closes: #377740)
   * checks/menus:
     + [RA] perm2oct definition moved to Util.pm.
   * checks/scripts:
@@ -25,7 +32,7 @@
     + [RA] Move perm2oct to here and improve recognition of s, S, t, and T
       characters.  Thanks to Justin B. Rye for patch.  (Closes: #376119)
 
- -- Russ Allbery <rra@debian.org>  Sun,  3 Sep 2006 14:55:54 -0700
+ -- Russ Allbery <rra@debian.org>  Sun,  3 Sep 2006 16:16:25 -0700
 
 lintian (1.23.23) unstable; urgency=low
 

Added: trunk/testset/scripts/debian/postinst
===================================================================
--- trunk/testset/scripts/debian/postinst	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/debian/postinst	2006-09-03 23:17:09 UTC (rev 738)
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+    update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+    update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+    update-rc.d skeleton defaults >/dev/null
+fi

Added: trunk/testset/scripts/debian/postrm
===================================================================
--- trunk/testset/scripts/debian/postrm	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/debian/postrm	2006-09-03 23:17:09 UTC (rev 738)
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] ; then
+    update-rc.d lsb-broken remove >/dev/null
+    update-rc.d no-lsb remove >/dev/null
+    update-rc.d skeleton remove >/dev/null
+fi

Modified: trunk/testset/scripts/debian/rules
===================================================================
--- trunk/testset/scripts/debian/rules	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/debian/rules	2006-09-03 23:17:09 UTC (rev 738)
@@ -9,6 +9,7 @@
 binary-indep:
 	install -d $(tmp)/usr/bin/
 	install -d $(tmp)/etc/X11/Xsession.d/
+	install -d $(tmp)/etc/init.d/
 	install -d $(tmp)/usr/share/scripts/
 	install -d $(tmp)/usr/share/doc/scripts/
 	install -d $(tmp)/usr/lib/python2.3/site-packages/
@@ -37,6 +38,10 @@
 	install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
 	install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
 
+	install -m 755 init-skeleton $(tmp)/etc/init.d/skeleton
+	install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+	install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+
 	install -m 755 phpfoo $(tmp)/usr/share/scripts/
 	sed 's/php$$/php5/' phpfoo > $(tmp)/usr/share/scripts/php5foo
 	chmod 755 $(tmp)/usr/share/scripts/php5foo
@@ -65,6 +70,8 @@
 	gzip -9 $(tmp)/usr/share/doc/scripts/changelog
 
 	cp debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+	install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+	install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
 	dpkg-gencontrol -isp
 	dpkg --build $(tmp) ..
 

Modified: trunk/testset/scripts/debian/scripts.conffiles
===================================================================
--- trunk/testset/scripts/debian/scripts.conffiles	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/debian/scripts.conffiles	2006-09-03 23:17:09 UTC (rev 738)
@@ -1 +1,3 @@
+/etc/init.d/lsb-broken
+/etc/init.d/no-lsb
 /etc/X11/Xsession.d/xsession-test

Added: trunk/testset/scripts/init-lsb-broken
===================================================================
--- trunk/testset/scripts/init-lsb-broken	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/init-lsb-broken	2006-09-03 23:17:09 UTC (rev 738)
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          bad-lsb
+#  Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Default-Start:     1 2 3 4 5
+# Default-Stop:      S 0 1 6 X
+# Short-Description: Example initscript
+#                    but this can't be continued
+# Description:       An example of a bad LSB section in an init script.
+#                    This continuation is allowed (with spaces).
+#			This one is too (with tabs).
+# X-Debian-Foo:      Some unknown but valid keyword.
+# Foo:               Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start:    This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions!  But stop isn't missing.
+case "$1" in
+  start|stop)
+	echo "Blah"
+	;;
+  *)
+	echo "Usage: foo start" >&2
+	exit 3
+	;;
+esac
+
+:

Added: trunk/testset/scripts/init-no-lsb
===================================================================
--- trunk/testset/scripts/init-no-lsb	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/init-no-lsb	2006-09-03 23:17:09 UTC (rev 738)
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay.  (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+  start)
+	echo "Blah starting"
+	;;
+  stop)
+        echo "Blah stopping"
+        ;;
+  restart|force-reload)
+        echo "Blah restarting"
+        ;;
+esac
+
+:

Added: trunk/testset/scripts/init-skeleton
===================================================================
--- trunk/testset/scripts/init-skeleton	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/scripts/init-skeleton	2006-09-03 23:17:09 UTC (rev 738)
@@ -0,0 +1,155 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          skeleton
+# Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      S 0 1 6
+# Short-Description: Example initscript
+# Description:       This file should be used to construct scripts to be
+#                    placed in /etc/init.d.
+### END INIT INFO
+
+# Author: Foo Bar <foobar@baz.org>
+#
+# Please remove the "Author" lines above and replace them
+# with your own name if you copy and modify this script.
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+	# Return
+	#   0 if daemon has been started
+	#   1 if daemon was already running
+	#   2 if daemon could not be started
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+		|| return 1
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+		$DAEMON_ARGS \
+		|| return 2
+	# Add code here, if necessary, that waits for the process to be ready
+	# to handle requests from services started subsequently which depend
+	# on this one.  As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+	# Return
+	#   0 if daemon has been stopped
+	#   1 if daemon was already stopped
+	#   2 if daemon could not be stopped
+	#   other if a failure occurred
+	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	# Wait for children to finish too if this is a daemon that forks
+	# and if the daemon is only ever run from this initscript.
+	# If the above conditions are not satisfied then add some other code
+	# that waits for the process to drop all resources that could be
+	# needed by services started subsequently.  A last resort is to
+	# sleep for some time.
+	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+	[ "$?" = 2 ] && return 2
+	# Many daemons don't delete their pidfiles when they exit.
+	rm -f $PIDFILE
+	return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+	#
+	# If the daemon can reload its configuration without
+	# restarting (for example, when it is sent a SIGHUP),
+	# then implement that here.
+	#
+	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+	return 0
+}
+
+case "$1" in
+  start)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+	do_start
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  stop)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+	do_stop
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  #reload|force-reload)
+	#
+	# If do_reload() is not implemented then leave this commented out
+	# and leave 'force-reload' as an alias for 'restart'.
+	#
+	#log_daemon_msg "Reloading $DESC" "$NAME"
+	#do_reload
+	#log_end_msg $?
+	#;;
+  restart|force-reload)
+	#
+	# If the "reload" option is implemented then remove the
+	# 'force-reload' alias
+	#
+	log_daemon_msg "Restarting $DESC" "$NAME"
+	do_stop
+	case "$?" in
+	  0|1)
+		do_start
+		case "$?" in
+			0) log_end_msg 0 ;;
+			1) log_end_msg 1 ;; # Old process is still running
+			*) log_end_msg 1 ;; # Failed to start
+		esac
+		;;
+	  *)
+	  	# Failed to stop
+		log_end_msg 1
+		;;
+	esac
+	;;
+  *)
+	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+	exit 3
+	;;
+esac
+
+:

Modified: trunk/testset/tags.scripts
===================================================================
--- trunk/testset/tags.scripts	2006-09-03 21:56:29 UTC (rev 737)
+++ trunk/testset/tags.scripts	2006-09-03 23:17:09 UTC (rev 738)
@@ -1,5 +1,10 @@
 E: scripts source: package-uses-debhelper-but-lacks-build-depends
 E: scripts: calls-suidperl-directly ./usr/bin/suidperlfoo
+E: scripts: file-in-etc-not-marked-as-conffile /etc/init.d/skeleton
+E: scripts: init.d-script-does-not-implement-required-option /etc/init.d/lsb-broken force-reload
+E: scripts: init.d-script-does-not-implement-required-option /etc/init.d/lsb-broken restart
+E: scripts: init.d-script-has-duplicate-lsb-section /etc/init.d/lsb-broken
+E: scripts: init.d-script-has-unterminated-lsb-section /etc/init.d/lsb-broken:15
 E: scripts: missing-dep-for-interpreter lefty => graphviz (./usr/bin/lefty-foo)
 E: scripts: no-copyright-file
 E: scripts: php-script-but-no-php-cli-dep ./usr/share/scripts/phpfoo
@@ -12,6 +17,8 @@
 E: scripts: wrong-path-for-ruby ./usr/bin/rubyfoo #!/bin/ruby1.8
 W: scripts source: ancient-standards-version 3.2.1 (current is 3.7.2)
 W: scripts source: changelog-should-mention-nmu
+W: scripts source: maintainer-script-lacks-debhelper-token debian/postinst
+W: scripts source: maintainer-script-lacks-debhelper-token debian/postrm
 W: scripts source: package-uses-deprecated-debhelper-compat-version 1
 W: scripts source: source-nmu-has-incorrect-version-number 6
 W: scripts source: uses-dh-python-with-no-pycompat
@@ -31,6 +38,14 @@
 W: scripts: executable-is-not-world-readable usr/bin/perl-bizarre-2 0750 != 0755
 W: scripts: executable-is-not-world-readable usr/bin/suidperlfoo2 4751
 W: scripts: executable-not-elf-or-script ./usr/bin/perl-bizarre-3
+W: scripts: init.d-script-has-bad-lsb-line /etc/init.d/lsb-broken:4
+W: scripts: init.d-script-has-bad-lsb-line /etc/init.d/lsb-broken:9
+W: scripts: init.d-script-has-bad-stop-runlevel /etc/init.d/lsb-broken X
+W: scripts: init.d-script-has-conflicting-start-stop /etc/init.d/lsb-broken 1
+W: scripts: init.d-script-has-unknown-lsb-keyword /etc/init.d/lsb-broken:14 foo
+W: scripts: init.d-script-missing-lsb-keyword /etc/init.d/lsb-broken required-start
+W: scripts: init.d-script-missing-lsb-section /etc/init.d/no-lsb
+W: scripts: init.d-script-not-marked-as-conffile /etc/init.d/skeleton
 W: scripts: non-standard-executable-perm usr/bin/perl-bizarre-3 0754 != 0755
 W: scripts: non-standard-setuid-executable-perm usr/bin/suidperlfoo 4555
 W: scripts: package-installs-python-pyc usr/lib/python2.3/site-packages/test.pyc



Reply to: