Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian....@packages.debian.org
Usertags: pu

Hi

this is the respective proposed update for gnulib to address
CVE-2018-17942 / #910757. Technically the bug is not yet fixed in
unstable/buster but pending in the delayed queue.

So you might want to not accept it until the unstable upload really
reaches the archive.

This only fixes the issue in src:gnulib itself, any other project
which is enbedding gnulib has not been checked for the particular
issue (and might be done in future). pspp where the original report
comes from at least contains an updated gnulib copy already in
unstable/buster.

Regards,
Salvatore
diff -Nru gnulib-20140202+stable/debian/changelog 
gnulib-20140202+stable/debian/changelog
--- gnulib-20140202+stable/debian/changelog     2014-03-03 14:18:15.000000000 
+0100
+++ gnulib-20140202+stable/debian/changelog     2019-02-09 21:58:02.000000000 
+0100
@@ -1,3 +1,10 @@
+gnulib (20140202+stable-2+deb9u1) stretch; urgency=medium
+
+  * Non-maintainer upload.
+  * vasnprintf: Fix heap memory overrun bug (CVE-2018-17942) (Closes: #910757)
+
+ -- Salvatore Bonaccorso <car...@debian.org>  Sat, 09 Feb 2019 21:58:02 +0100
+
 gnulib (20140202+stable-2) unstable; urgency=low
 
   * New package: git-merge-changelog (Closes: #646013).
diff -Nru 
gnulib-20140202+stable/debian/patches/03-vasnprintf-Fix-heap-memory-overrun-bug.patch
 
gnulib-20140202+stable/debian/patches/03-vasnprintf-Fix-heap-memory-overrun-bug.patch
--- 
gnulib-20140202+stable/debian/patches/03-vasnprintf-Fix-heap-memory-overrun-bug.patch
       1970-01-01 01:00:00.000000000 +0100
+++ 
gnulib-20140202+stable/debian/patches/03-vasnprintf-Fix-heap-memory-overrun-bug.patch
       2019-02-09 21:58:02.000000000 +0100
@@ -0,0 +1,70 @@
+From: Bruno Haible <br...@clisp.org>
+Date: Sun, 23 Sep 2018 14:13:52 +0200
+Subject: vasnprintf: Fix heap memory overrun bug.
+Origin: 
https://github.com/coreutils/gnulib/commit/278b4175c9d7dd47c1a3071554aac02add3b3c35
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-17942
+Bug-Debian: https://bugs.debian.org/910757
+Bug: https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html
+
+Reported by Ben Pfaff <b...@cs.stanford.edu> in
+<https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html>.
+
+* lib/vasnprintf.c (convert_to_decimal): Allocate one more byte of
+memory.
+* tests/test-vasnprintf.c (test_function): Add another test.
+---
+ ChangeLog               |  9 +++++++++
+ lib/vasnprintf.c        |  4 +++-
+ tests/test-vasnprintf.c | 21 ++++++++++++++++++++-
+ 3 files changed, 32 insertions(+), 2 deletions(-)
+
+diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
+index 56ffbe308a6a..30d021b2847d 100644
+--- a/lib/vasnprintf.c
++++ b/lib/vasnprintf.c
+@@ -860,7 +860,9 @@ convert_to_decimal (mpn_t a, size_t extra_zeroes)
+   size_t a_len = a.nlimbs;
+   /* 0.03345 is slightly larger than log(2)/(9*log(10)).  */
+   size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
+-  char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes));
++  /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the
++     digits of a, followed by 1 byte for the terminating NUL.  */
++  char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1));
+   if (c_ptr != NULL)
+     {
+       char *d_ptr = c_ptr;
+diff --git a/tests/test-vasnprintf.c b/tests/test-vasnprintf.c
+index 19731bc93378..93d81d7041c5 100644
+--- a/tests/test-vasnprintf.c
++++ b/tests/test-vasnprintf.c
+@@ -53,7 +53,26 @@ test_function (char * (*my_asnprintf) (char *, size_t *, 
const char *, ...))
+       ASSERT (result != NULL);
+       ASSERT (strcmp (result, "12345") == 0);
+       ASSERT (length == 5);
+-      if (size < 6)
++      if (size < 5 + 1)
++        ASSERT (result != buf);
++      ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
++      if (result != buf)
++        free (result);
++    }
++
++  /* Note: This test assumes IEEE 754 representation of 'double' floats.  */
++  for (size = 0; size <= 8; size++)
++    {
++      size_t length;
++      char *result;
++
++      memcpy (buf, "DEADBEEF", 8);
++      length = size;
++      result = my_asnprintf (buf, &length, "%2.0f", 1.6314159265358979e+125);
++      ASSERT (result != NULL);
++      ASSERT (strcmp (result, 
"163141592653589790215729350939528493057529598899734151772468186268423257777068536614838678161083520756952076273094236944990208")
 == 0);
++      ASSERT (length == 126);
++      if (size < 126 + 1)
+         ASSERT (result != buf);
+       ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
+       if (result != buf)
+-- 
+2.20.1
+
diff -Nru gnulib-20140202+stable/debian/patches/series 
gnulib-20140202+stable/debian/patches/series
--- gnulib-20140202+stable/debian/patches/series        2014-03-03 
14:18:15.000000000 +0100
+++ gnulib-20140202+stable/debian/patches/series        2019-02-09 
21:58:02.000000000 +0100
@@ -1,2 +1,3 @@
 01-gnulib-directory.patch
 02-shebang.patch
+03-vasnprintf-Fix-heap-memory-overrun-bug.patch

Reply via email to