]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
dd: fix a signal handling race
authorPádraig Brady <P@draigBrady.com>
Thu, 13 Aug 2009 13:37:43 +0000 (14:37 +0100)
committerPádraig Brady <P@draigBrady.com>
Thu, 13 Aug 2009 15:06:50 +0000 (16:06 +0100)
* src/dd.c (main): Install the signal handlers at startup
rather than just before the copy starts. In this way signals
received before the copy (like during a slow truncate for e.g.)
will be deferred and handled consistently.
* THANKS: Add Bernhard's email address.
* NEWS: Mention the fix.
Reported by Bernhard Voelker.

NEWS
THANKS
src/dd.c

diff --git a/NEWS b/NEWS
index 6df0d65a6f2723a69e10c49253544a3968da41c1..a88546d81f91e7ad6f597b907df9a4ff0e8dc514 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,9 @@ GNU coreutils NEWS                                    -*- outline -*-
   dd's oflag=direct option now works even when the size of the input
   is not a multiple of e.g., 512 bytes.
 
+  dd now handles signals consistently even when they're received
+  before data copying has started.
+
   install runs faster again with SELinux enabled
   [introduced in coreutils-7.0]
 
diff --git a/THANKS b/THANKS
index d3541ce81918a8a05e4ed42492897d498f0522a6..bd078db1f7fcb9cdbcd56a152a94b4d783f29472 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -75,6 +75,7 @@ Bernd Melchers                      melchers@cis.fu-berlin.de
 Bernhard Baehr                      bernhard.baehr@gmx.de
 Bernhard Gabler                     bernhard@uni-koblenz.de
 Bernhard Rosenkraenzer              bero@redhat.de
+Bernhard Voelker                    bernhard.voelker@siemens-enterprise.com
 Bert Deknuydt                       Bert.Deknuydt@esat.kuleuven.ac.be
 Bert Wesarg                         bert.wesarg@googlemail.com
 Bill Peters                         peters@gaffel.as.arizona.edu
index d9e4c85b8bdc4d91c0e36d0a5d9c5f24b8e9f67d..30bd8085c7702f1c28ce5a06976186f402286af2 100644 (file)
--- a/src/dd.c
+++ b/src/dd.c
@@ -1828,6 +1828,8 @@ main (int argc, char **argv)
   int exit_status;
   off_t offset;
 
+  install_signal_handlers ();
+
   initialize_main (&argc, &argv);
   set_program_name (argv[0]);
   setlocale (LC_ALL, "");
@@ -1928,8 +1930,6 @@ main (int argc, char **argv)
        }
     }
 
-  install_signal_handlers ();
-
   start_time = gethrxtime ();
 
   exit_status = dd_copy ();