Bug#486041: bashism in /bin/sh script

Vincent Zweije vincent at zweije.nl.eu.org
Sun Jun 15 16:04:38 UTC 2008


user debian-release at lists.debian.org
usertag 486041 -goal-dash
tag 486041 patch
severity 486041 minor
thanks

On Thu, Jun 12, 2008 at 11:13:07PM -0500, Raphael Geissert wrote:

||  While performing an archive wide checkbashisms (from the 'devscripts' package)
||  check I've found your package containing one or more /bin/sh scripts making
||  use of bashisms.
||
||  checkbashisms' output:
||  > possible bashism in ./usr/sbin/update-grub line 71 ($UID should be "id
||  > -ru"):
||  > if [ "x$UID" = "x" ] ; then
||  > possible bashism in ./usr/sbin/update-grub line 75 ($UID should be "id
||  > -ru"):
||  > if [ "$UID" != 0 ] ; then

On inspection this code appears safe. If UID is empty, it sets it using
id -u.

There is however a different although minor bug: the code should be
using $EUID (or set UID using id -ru).

The following patch should change the use of UID to EUID:

diff -rud grub2-1.96+20080601.orig/util/update-grub.in grub2-1.96+20080601/util/update-grub.in
--- grub2-1.96+20080601.orig/util/update-grub.in	2008-05-31 11:47:06.000000000 +0200
+++ grub2-1.96+20080601/util/update-grub.in	2008-06-15 14:35:59.000000000 +0200
@@ -68,11 +68,11 @@
 
 . ${libdir}/grub/update-grub_lib
 
-if [ "x$UID" = "x" ] ; then
-  UID=`id -u`
+if [ "x$EUID" = "x" ] ; then
+  EUID=`id -u`
 fi
 
-if [ "$UID" != 0 ] ; then
+if [ "$EUID" != 0 ] ; then
   echo "$0: You must run this as root" >&2
   exit 1
 fi

Ciao. Vincent.





More information about the Pkg-grub-devel mailing list