summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxin B. John <maxin.john@enea.com>2015-01-07 13:11:43 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-02-11 17:39:47 +0000
commit54debe63cbd38dba56895541c434f895e158f70b (patch)
treee3ca8722c8470d6d33d8aeb9fd93f25c2e1978f4
parent965943176c580b7943bb4d94efd58b8818c04919 (diff)
downloadopenembedded-core-54debe63cbd38dba56895541c434f895e158f70b.tar.gz
openembedded-core-54debe63cbd38dba56895541c434f895e158f70b.tar.bz2
openembedded-core-54debe63cbd38dba56895541c434f895e158f70b.zip
coreutils: Fix CVE-2014-9471
Fiedler Roman discovered that coreutils' parse_datetime() function has some flaws that may be exploitable if the date(1), touch(1), or potentially other programs, accept untrusted input for certain parameters. While researching this issue, he discovered that it was independently discovered by Bertrand Jacquin and reported at http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16872 $ touch '--date=TZ="123"345" @1' *** Error in `touch': free(): invalid pointer: 0x00007fffd33e55e0 *** Aborted $ date '--date=TZ="123"345" @1' date[394]: segfault at 7fff24000000 ip 00007f6dd5b73404 sp 00007fff27cce8f8 error 4 in libc-2.20.so[7f6dd5af7000+199000] Segmentation fault Signed-off-by: Maxin B. John <maxin.john@enea.com> Signed-off-by: Armin Kuster <akuster808@gmail.com>
-rw-r--r--meta/recipes-core/coreutils/coreutils-8.22/date-tz-crash.patch43
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.22.bb1
2 files changed, 44 insertions, 0 deletions
diff --git a/meta/recipes-core/coreutils/coreutils-8.22/date-tz-crash.patch b/meta/recipes-core/coreutils/coreutils-8.22/date-tz-crash.patch
new file mode 100644
index 0000000000..570e4fd49c
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-8.22/date-tz-crash.patch
@@ -0,0 +1,43 @@
+This was reported in http://bugs.gnu.org/16872
+from the coreutils command: date -d 'TZ="""'
+
+The infinite loop for this case was present since the
+initial TZ="" parsing support in commit de95bdc2 29-10-2004.
+This was changed to a crash or heap corruption depending
+on the platform with commit 2e3e4195 18-01-2010.
+
+* lib/parse-datetime.y (parse_datetime): Break out of the
+TZ="" parsing loop once the second significant " is found.
+Also skip over any subsequent whitespace to be consistent
+with the non TZ= case.
+
+Fixes: CVE-2014-9471
+
+Upstream-Status: backport
+
+Signed-off-by: Maxin B. John <maxin.john@enea.com>
+Signed-off-by: Pádraig Brady <P@draigBrady.com>
+---
+diff -Naur coreutils-8.22-origin/lib/parse-datetime.y coreutils-8.22/lib/parse-datetime.y
+--- coreutils-8.22-origin/lib/parse-datetime.y 2013-12-04 15:53:33.000000000 +0100
++++ coreutils-8.22/lib/parse-datetime.y 2015-01-05 17:11:16.754358184 +0100
+@@ -1303,8 +1303,6 @@
+ char tz1buf[TZBUFSIZE];
+ bool large_tz = TZBUFSIZE < tzsize;
+ bool setenv_ok;
+- /* Free tz0, in case this is the 2nd or subsequent time through. */
+- free (tz0);
+ tz0 = get_tz (tz0buf);
+ z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
+ for (s = tzbase; *s != '"'; s++)
+@@ -1317,6 +1315,10 @@
+ goto fail;
+ tz_was_altered = true;
+ p = s + 1;
++ while (c = *p, c_isspace (c))
++ p++;
++
++ break;
+ }
+ }
+
diff --git a/meta/recipes-core/coreutils/coreutils_8.22.bb b/meta/recipes-core/coreutils/coreutils_8.22.bb
index f85bacabd3..4a1aee6260 100644
--- a/meta/recipes-core/coreutils/coreutils_8.22.bb
+++ b/meta/recipes-core/coreutils/coreutils_8.22.bb
@@ -17,6 +17,7 @@ SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
file://dummy_help2man.patch \
file://fix-for-dummy-man-usage.patch \
file://fix-selinux-flask.patch \
+ file://date-tz-crash.patch \
"
SRC_URI[md5sum] = "8fb0ae2267aa6e728958adc38f8163a2"