Package: kernel-package
Severity: grave
Tags: patch

Hi Manoj,

Using absolute paths in /etc/kernel-img.conf *_hook variables can have horrid
consequences when things like this happen:

 - the command (in /usr) turns out to be in FHS violation and must be moved to 
/.
 - the command (in /) turns out to depend on stuff from /usr, and must be moved 
to /usr.

You can see #361929 for an example.  Hardcoded paths for /sbin/update-grub are
now in everyone's system and it'll be a mess to fix this.

Unfortunately, the "(-x foo)" sanity checks that are performed in kernel-package
scripts make the assumption that the path is absolute, as the check fails
otherwise.  I'm not sure if that's intentional, but it's a very bad thing to do.

Please could you apply the attached patch to disable the checks?  (or rewrite
the checks in some way that doesn't break relative paths)

Thanks

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17-1-amd64-k8
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to en_US.UTF-8)
diff -ur kernel-package-10.050.old/kernel/pkg/doc/postinst 
kernel-package-10.050/kernel/pkg/doc/postinst
--- kernel-package-10.050.old/kernel/pkg/doc/postinst   2005-10-27 
20:38:59.000000000 +0200
+++ kernel-package-10.050/kernel/pkg/doc/postinst       2006-07-29 
13:20:16.000000000 +0200
@@ -65,10 +65,8 @@
 }
 
 ## Run user hook script here, if any
-if (-x "$src_postinst_hook") {
-    system ("$src_postinst_hook", $package, $version) &&
-       warn "User hook script $src_postinst_hook failed";
-}
+system ("$src_postinst_hook", $package, $version) &&
+  warn "User hook script $src_postinst_hook failed";
 
 
 
diff -ur kernel-package-10.050.old/kernel/pkg/headers/postinst 
kernel-package-10.050/kernel/pkg/headers/postinst
--- kernel-package-10.050.old/kernel/pkg/headers/postinst       2005-11-07 
19:47:51.000000000 +0100
+++ kernel-package-10.050/kernel/pkg/headers/postinst   2006-07-29 
13:20:03.000000000 +0200
@@ -155,14 +155,10 @@
 }
 
 ## Run user hook script here, if any
-if (-x "$src_postinst_hook") {
-    system ("$src_postinst_hook", $package_name, $version) &&
-       warn "User hook script $src_postinst_hook failed";
-}
-if (-x "$header_postinst_hook") {
-    system ("$header_postinst_hook", $package_name, $version) &&
-       warn "User hook script $header_postinst_hook failed";
-}
+system ("$src_postinst_hook", $package_name, $version) &&
+  warn "User hook script $src_postinst_hook failed";
+system ("$header_postinst_hook", $package_name, $version) &&
+  warn "User hook script $header_postinst_hook failed";
 
 
 
diff -ur kernel-package-10.050.old/kernel/pkg/image/postinst 
kernel-package-10.050/kernel/pkg/image/postinst
--- kernel-package-10.050.old/kernel/pkg/image/postinst 2006-06-16 
20:55:43.000000000 +0200
+++ kernel-package-10.050/kernel/pkg/image/postinst     2006-07-29 
13:18:34.000000000 +0200
@@ -1171,11 +1171,9 @@
 $ENV{'STEM'} = "=ST";
 
 ## Run user hook script here, if any
-if (-x "$postinst_hook") {
-  print STDERR "Running postinst hook $postinst_hook.\n";
-  system ("$postinst_hook $version $realimageloc$kimage-$version") &&
-    warn "User hook script $postinst_hook failed";
-}
+print STDERR "Running postinst hook $postinst_hook.\n";
+system ("$postinst_hook $version $realimageloc$kimage-$version") &&
+  warn "User hook script $postinst_hook failed";
 
 if (-d "/etc/kernel/postinst.d") {
   print STDERR "Examining /etc/kernel/postinst.d.\n";
diff -ur kernel-package-10.050.old/kernel/pkg/image/postrm 
kernel-package-10.050/kernel/pkg/image/postrm
--- kernel-package-10.050.old/kernel/pkg/image/postrm   2006-07-19 
21:00:44.000000000 +0200
+++ kernel-package-10.050/kernel/pkg/image/postrm       2006-07-29 
13:19:00.000000000 +0200
@@ -281,11 +281,9 @@
 $ENV{'STEM'} = "=ST";
 
 ## Run user hook script here, if any
-if (-x "$postrm_hook") {
-  warn "Running postrm hook $postrm_hook .\n";
-  system ("$postrm_hook $version $realimageloc$kimage-$version") &&
-           warn "User hook script $postrm_hook failed";
-}
+warn "Running postrm hook $postrm_hook .\n";
+system ("$postrm_hook $version $realimageloc$kimage-$version") &&
+  warn "User hook script $postrm_hook failed";
 if (-d "/etc/kernel/postrm.d") {
   warn "Examining /etc/kernel/postrm.d .\n";
   system ("run-parts --verbose --exit-on-error --arg=$version " .
diff -ur kernel-package-10.050.old/kernel/pkg/image/preinst 
kernel-package-10.050/kernel/pkg/image/preinst
--- kernel-package-10.050.old/kernel/pkg/image/preinst  2006-03-22 
21:07:17.000000000 +0100
+++ kernel-package-10.050/kernel/pkg/image/preinst      2006-07-29 
13:19:16.000000000 +0200
@@ -508,11 +508,9 @@
 
 
 ## Run user hook script here, if any
-if (-x "$preinst_hook") {
-  print STDERR "Running preinst hook $preinst_hook.\n";
-    system ("$preinst_hook $version  ${realimageloc}${kimage}-${version}") &&
-       die "User hook script $preinst_hook failed";
-}
+print STDERR "Running preinst hook $preinst_hook.\n";
+  system ("$preinst_hook $version  ${realimageloc}${kimage}-${version}") &&
+    die "User hook script $preinst_hook failed";
 if (-d "/etc/kernel/preinst.d") {
   print STDERR "Examining /etc/kernel/preinst.d/\n";
   system ("run-parts --verbose --exit-on-error --arg=$version" .
diff -ur kernel-package-10.050.old/kernel/pkg/image/prerm 
kernel-package-10.050/kernel/pkg/image/prerm
--- kernel-package-10.050.old/kernel/pkg/image/prerm    2005-12-31 
18:42:29.000000000 +0100
+++ kernel-package-10.050/kernel/pkg/image/prerm        2006-07-29 
13:19:32.000000000 +0200
@@ -276,11 +276,9 @@
 
 
 ## Run user hook script here, if any
-if (-x "$prerm_hook") {
-  print STDERR "Running prerm hook $prerm_hook.\n";
-  system ("$prerm_hook $version ${realimageloc}${kimage}-${version}") &&
-           warn "User hook script $prerm_hook failed";
-}
+print STDERR "Running prerm hook $prerm_hook.\n";
+system ("$prerm_hook $version ${realimageloc}${kimage}-${version}") &&
+  warn "User hook script $prerm_hook failed";
 if (-d "/etc/kernel/prerm.d") {
   print STDERR "Examining /etc/kernel/prerm.d.\n";
   system ("run-parts --verbose --exit-on-error --arg=$version " . 
diff -ur kernel-package-10.050.old/kernel/pkg/source/postinst 
kernel-package-10.050/kernel/pkg/source/postinst
--- kernel-package-10.050.old/kernel/pkg/source/postinst        2005-06-08 
07:55:16.000000000 +0200
+++ kernel-package-10.050/kernel/pkg/source/postinst    2006-07-29 
13:18:03.000000000 +0200
@@ -65,10 +65,8 @@
 }
 
 ## Run user hook script here, if any
-if (-x "$src_postinst_hook") {
-    system ("$src_postinst_hook", $package, $version) &&
-       warn "User hook script $src_postinst_hook failed";
-}
+system ("$src_postinst_hook", $package, $version) &&
+  warn "User hook script $src_postinst_hook failed";
 
 
 

Reply via email to