Package: laptop-mode-tools
Version: 1.34-1
Severity: normal
Tags: patch

Hello,

/etc/init.d/laptop-mode creates a temporary file without removing it
every time it is run, because it invokes rm only on abnormal exit.
The numerous occurrences of
    $( cat $TEMPFILE )
in this script are underquoted: where it is double quoted, it should
be single quoted so that cat is not run too early, and where it is
unquoted, it should be double quoted so that the output of laptop_mode
is not subject to globbing.  Finally, these uses of temporary files
are unnecessary because the shell can directly turn the output of
laptop_mode into an argument to log_action_end_msg.

The following patch fixes these problems.

Thanks,
        Ken

--- /etc/init.d/laptop-mode.orig        2007-09-15 03:12:24.000000000 -0400
+++ /etc/init.d/laptop-mode     2007-09-15 03:12:20.000000000 -0400
@@ -24,41 +24,33 @@
 
 # Enable laptop mode when the system is booted when running on battery.
 
-TEMPFILE=`mktemp`
-echo "Failed to start laptop mode" > $TEMPFILE
-
-
-trap "log_action_end_msg 10 $( cat $TEMPFILE ) ; rm $TEMPFILE; exit 10" HUP 
INT ABRT QUIT SEGV TERM
+trap 'log_action_end_msg 10 "Failed to start laptop mode"; exit 10' HUP INT 
ABRT QUIT SEGV TERM
 set -e
 
 case $1 in
   start)
     log_action_begin_msg "Enabling laptop mode"
     touch /var/run/laptop-mode-enabled
-    /usr/sbin/laptop_mode auto > $TEMPFILE
-    log_action_end_msg 0 $( cat $TEMPFILE )
+    log_action_end_msg 0 "$(/usr/sbin/laptop_mode auto)"
     ;;
 
   restart|reload|force-reload)
     log_action_begin_msg "Disabling laptop mode"
     # Full restart: first stop laptop mode completely (to restore default 
mount options etc.)
     rm -f /var/run/laptop-mode-enabled
-    /usr/sbin/laptop_mode stop > $TEMPFILE
-    log_action_end_msg 0 $( cat $TEMPFILE )
+    log_action_end_msg 0 "$(/usr/sbin/laptop_mode stop)"
     
     log_action_begin_msg "Enabling laptop mode"
     # Now remove files containing stored status, re-enable, and start it up 
again.
-    rm -f /var/run/laptop-mode-*
+    rm -f /var/run/laptop-mode-*
     touch /var/run/laptop-mode-enabled
-    /usr/sbin/laptop_mode auto force > $TEMPFILE
-    log_action_end_msg 0 $( cat $TEMPFILE )
+    log_action_end_msg 0 "$(/usr/sbin/laptop_mode auto force)"
     ;;
 
   stop)
     log_action_begin_msg "Disabling laptop mode"
     rm -f /var/run/laptop-mode-enabled
-    /usr/sbin/laptop_mode stop > $TEMPFILE
-    log_action_end_msg 0 $( cat $TEMPFILE )    
+    log_action_end_msg 0 "$(/usr/sbin/laptop_mode stop)"
     ;;
 
   status)

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.22 (SMP w/2 CPU cores)
Locale: LANG=zh_TW.UTF-8, LC_CTYPE=zh_TW.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages laptop-mode-tools depends on:
ii  lsb-base                      3.1-24     Linux Standard Base 3.1 init scrip

Versions of packages laptop-mode-tools recommends:
ii  acpid                         1.0.4-7.1  Utilities for using ACPI power man
ii  apmd                          3.2.2-8.1  Utilities for Advanced Power Manag
ii  hdparm                        7.7-1      tune hard disk parameters for high
ii  sdparm                        1.01-1     Output and modify SCSI device para

-- no debconf information

-- 
Edit this signature at http://www.digitas.harvard.edu/cgi-bin/ken/sig
No arms? - no cookies!

Attachment: signature.asc
Description: Digital signature

Reply via email to