[Initscripts-ng-commits] r736 - in /trunk/src/insserv/debian: changelog patches/00list patches/60_disable_cfgfilter_stat.dpatch run-testsuite

kelmo-guest at users.alioth.debian.org kelmo-guest at users.alioth.debian.org
Thu May 15 07:53:36 UTC 2008


Author: kelmo-guest
Date: Thu May 15 07:53:35 2008
New Revision: 736

URL: http://svn.debian.org/wsvn/initscripts-ng/?sc=1&rev=736
Log:
* Add patch 60_disable_cfgfilter_stat to remove stat check from the
  callback function that filters the scanning of /etc/insserv.conf.d/ dir
  for confiuration file snippets. Instead do stat check in scan_conf().
* New test case to show that two initscripts cannot have the same Provides
  field.
* New test case exposing ability to insert a script into runlevel
  configuration that depends on virtual facility that is not provided or
  does not exist.
* New test case to check that /etc/insserv.conf.d/ can be used to allow one
  or more services to define and provide a virtual facility.

Added:
    trunk/src/insserv/debian/patches/60_disable_cfgfilter_stat.dpatch   (with props)
Modified:
    trunk/src/insserv/debian/changelog
    trunk/src/insserv/debian/patches/00list
    trunk/src/insserv/debian/run-testsuite

Modified: trunk/src/insserv/debian/changelog
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/changelog?rev=736&op=diff
==============================================================================
--- trunk/src/insserv/debian/changelog (original)
+++ trunk/src/insserv/debian/changelog Thu May 15 07:53:35 2008
@@ -1,5 +1,6 @@
 insserv (1.11.0-9) UNRELEASED; urgency=low
 
+  [ Petter Reinholdtsen ]
   * New test case to demonstrate the bug reported in #477415.
   * Include empty directories /etc/insserv.conf.d and
     /etc/insserv/overrides in the package, to get dpkg to warn about
@@ -7,7 +8,19 @@
   * Debconf translations:
     - Updated German from Erik Schanze (Closes: #479254).
 
- -- Petter Reinholdtsen <pere at debian.org>  Sun,  4 May 2008 14:43:59 +0200
+  [ Kel Modderman ]
+  * Add patch 60_disable_cfgfilter_stat to remove stat check from the
+    callback function that filters the scanning of /etc/insserv.conf.d/ dir
+    for confiuration file snippets. Instead do stat check in scan_conf().
+  * New test case to show that two initscripts cannot have the same Provides
+    field.
+  * New test case exposing ability to insert a script into runlevel
+    configuration that depends on virtual facility that is not provided or
+    does not exist.
+  * New test case to check that /etc/insserv.conf.d/ can be used to allow one
+    or more services to define and provide a virtual facility.
+
+ -- Kel Modderman <kel at otaku42.de>  Thu, 15 May 2008 09:29:12 +1000
 
 insserv (1.11.0-8) unstable; urgency=low
 

Modified: trunk/src/insserv/debian/patches/00list
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/patches/00list?rev=736&op=diff
==============================================================================
--- trunk/src/insserv/debian/patches/00list (original)
+++ trunk/src/insserv/debian/patches/00list Thu May 15 07:53:35 2008
@@ -9,3 +9,4 @@
 50_sign_warning
 51_overwrite_output
 52_shutdown_links
+60_disable_cfgfilter_stat

Added: trunk/src/insserv/debian/patches/60_disable_cfgfilter_stat.dpatch
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/patches/60_disable_cfgfilter_stat.dpatch?rev=736&op=file
==============================================================================
--- trunk/src/insserv/debian/patches/60_disable_cfgfilter_stat.dpatch (added)
+++ trunk/src/insserv/debian/patches/60_disable_cfgfilter_stat.dpatch Thu May 15 07:53:35 2008
@@ -1,0 +1,42 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 60_disable_cfgfilter_stat.dpatch by Kel Modderman <kel at otaku42.de>
+##
+## DP: The call to stat in scandir filter is flawed, it does not stat
+## DP: full path to file and prevents /etc/insserv.conf.d/* from being
+## DP: used. The filter function is called at one other location, and a
+## DP: stat + IS_REG() test is done before that.
+
+ at DPATCH@
+diff -urNad insserv~/insserv.c insserv/insserv.c
+--- insserv~/insserv.c	2008-05-15 01:11:53.000000000 +1000
++++ insserv/insserv.c	2008-05-15 01:13:36.000000000 +1000
+@@ -1810,11 +1810,6 @@
+ 	return 0;
+     if ((*name == '.') && ((*(name+1) == '\0') || (*(name+1) == '.')))
+ 	return 0;
+-    else {
+-	struct stat st;
+-	if ((stat(name,&st) < 0) || !S_ISREG(st.st_mode))
+-	    return 0;
+-    }
+     if ((end = strrchr(name, '.'))) {
+ 	end++;
+ 	if (!strncmp(end, "rpm", 3)	|| /* .rpmorig, .rpmnew, .rmpsave, ... */
+@@ -1868,6 +1863,7 @@
+     n = scandir(path, &namelist, cfgfile_filter, alphasort);
+     if(n > 0) {
+ 	while(n--) {
++	    struct stat st;
+ 	    char buf[PATH_MAX+1];
+ 	    int r;
+ 
+@@ -1875,6 +1871,9 @@
+ 	    if (r >= (int)sizeof(buf) || r < 0)
+ 		error("snprintf(): %s\n", strerror(errno));
+ 
++	    if ((stat(buf, &st) < 0) || !S_ISREG(st.st_mode))
++	        continue;
++
+ 	    scan_conf_file(buf);
+ 
+ 	    free(namelist[n]);

Propchange: trunk/src/insserv/debian/patches/60_disable_cfgfilter_stat.dpatch
------------------------------------------------------------------------------
    svn:executable = *

Modified: trunk/src/insserv/debian/run-testsuite
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/run-testsuite?rev=736&op=diff
==============================================================================
--- trunk/src/insserv/debian/run-testsuite (original)
+++ trunk/src/insserv/debian/run-testsuite Thu May 15 07:53:35 2008
@@ -985,6 +985,129 @@
 check_script_not_present 4 testscript
 check_script_not_present 5 testscript
 check_script_not_present 6 testscript
+}
+##########################################################################
+test_duplicate_provides() {
+echo
+echo "info: test two initscripts providing same facility"
+echo
+rm -rf $initddir
+mkdir -p $initddir
+
+insertscript one <<'EOF' || true
+### BEGIN INIT INFO
+# Provides:          samefac
+# Required-Start:
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+addscript two <<'EOF' || true
+### BEGIN INIT INFO
+# Provides:          samefac
+# Required-Start:
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+insserv_reg two || true
+
+list_rclinks
+
+check_script_not_present S two
+}
+##########################################################################
+test_bogus_facility() {
+echo
+echo "info: test insertion of script requiring a virtual facility that doesn't exist"
+echo
+rm -rf $initddir ${insconf}.d
+mkdir -p $initddir ${insconf}.d
+
+addscript dummy <<'EOF'
+### BEGIN INIT INFO
+# Provides:          dummy
+# Required-Start:    $bogusvirtualfacility
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+insserv_reg dummy || true
+
+list_rclinks
+
+${severity}_script_not_present S dummy
+}
+##########################################################################
+test_insserv_conf_d() {
+echo
+echo "info: test that /etc/insserv.conf.d/ is used"
+echo
+rm -rf $initddir ${insconf}.d
+mkdir -p $initddir ${insconf}.d
+
+# add a base service, to ensure check_order() is accurate
+insertscript dummy <<'EOF'
+### BEGIN INIT INFO
+# Provides:          dummy
+# Required-Start:
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+cat <<'EOF' > ${insconf}.d/facone
+$commvirtfac       +facone
+EOF
+
+insertscript facone <<'EOF' || true
+### BEGIN INIT INFO
+# Provides:          facone
+# Required-Start:    dummy
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+cat <<'EOF' > ${insconf}.d/factwo
+$commvirtfac       +factwo
+EOF
+
+insertscript factwo <<'EOF' || true
+### BEGIN INIT INFO
+# Provides:          factwo
+# Required-Start:    dummy
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+addscript service <<'EOF' || true
+### BEGIN INIT INFO
+# Provides:          service
+# Required-Start:    $commvirtfac
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+EOF
+
+insserv_reg service || true
+
+list_rclinks
+
+check_script_present S service
+check_order S facone service
+check_order S factwo service
 }
 ##########################################################################
 
@@ -1005,3 +1128,6 @@
 test_start_before
 test_stop_after
 test_adding_stop
+test_duplicate_provides
+test_bogus_facility
+test_insserv_conf_d




More information about the Initscripts-ng-commits mailing list