On 02/27/2014 09:48 PM, Bernhard Voelker wrote:
> On 02/25/2014 12:11 PM, Pádraig Brady wrote:
>> Proposed patch attached.
> 
> parse_datetime per se is pretty ugly, however, the fix LGTM:
> +1

I've pushed that to gnulib,
and the attached to coreutils.

thanks for the review,
Pádraig.

>From a4faa6a0a3ae93c01d036d830ae7a21b74913baf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com>
Date: Thu, 27 Feb 2014 23:43:34 +0000
Subject: [PATCH] date: fix crash or infinite loop when parsing a malformed
 TZ=""

* NEWS: Mention the fix.
* gnulib: Update to incorporate the fix.
This is the only change in this gnulib update.
* tests/misc/date.pl: Add a test for this case.

Fixes http://bugs.gnu.org/16872
---
 NEWS               |    3 +++
 gnulib             |    2 +-
 tests/misc/date.pl |    7 +++++++
 3 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/NEWS b/NEWS
index be8311f..d867784 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,9 @@ GNU coreutils NEWS                                    -*- outline -*-
   when reading the SELinux context for a file.
   [bug introduced in coreutils-8.22]
 
+  date could crash or go into an infinite loop when parsing a malformed TZ="".
+  [bug introduced with the --date='TZ="" ..' parsing feature in coreutils-5.3.0]
+
   head --lines=-0, when the input does not contain a trailing '\n',
   now copies all input to stdout.  Previously nothing was output in this case.
   [bug introduced with the --lines=-N feature in coreutils-5.0.1]
diff --git a/gnulib b/gnulib
index 1c6bf3d..a10acfb 160000
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit 1c6bf3d204c0cbd664590bbdc30fdf756d9fdb65
+Subproject commit a10acfb1d2118f9a180181d3fed5399dbbe1df3c
diff --git a/tests/misc/date.pl b/tests/misc/date.pl
index 57c6c72..40be4ca 100755
--- a/tests/misc/date.pl
+++ b/tests/misc/date.pl
@@ -287,6 +287,13 @@ my @Tests =
       {ERR => "date: invalid date '\\260'\n"},
       {EXIT => 1},
      ],
+
+     # From coreutils-5.3.0 to 8.22 inclusive
+     # this would either infinite loop or crash
+     ['invalid-TZ-crash', "-d 'TZ=\"\"\"'",
+      {ERR => "date: invalid date 'TZ=\"\"\"'\n"},
+      {EXIT => 1},
+     ],
     );
 
 # Repeat the cross-dst test, using Jan 1, 2005 and every interval from 1..364.
-- 
1.7.7.6

Reply via email to