Your message dated Sat, 10 Nov 2018 10:42:56 +0000
with message-id <1541846576.3542.38.ca...@adam-barratt.org.uk>
and subject line Closing bugs for updates included in 9.6
has caused the Debian Bug report #909842,
regarding stretch-pu: package libx11/2:1.6.4-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
909842: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=909842
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian....@packages.debian.org
Usertags: pu

Dear release team,

I would like to update libx11 in Stretch because it is currently
affected by CVE-2018-14598, CVE-2018-14599 and CVE-2018-14600. The
security team marked all issues as no-dsa. Please find attached the
debdiff. I had to refresh one unrelated patch because it did not apply
correctly. No other changes were made.

Regards,

Markus
diff -u libx11-1.6.4/debian/changelog libx11-1.6.4/debian/changelog
--- libx11-1.6.4/debian/changelog
+++ libx11-1.6.4/debian/changelog
@@ -1,3 +1,23 @@
+libx11 (2:1.6.4-3+deb9u1) stretch; urgency=high
+
+  * Non-maintainer upload.
+  * Fix CVE-2018-14598, CVE-2018-14599 and CVE-2018-14600:
+  * CVE-2018-14599:
+    The functions XGetFontPath, XListExtensions, and XListFonts are vulnerable
+    to an off-by-one override on malicious server responses.
+  * CVE-2018-14600:
+    The length value is interpreted as signed char on many systems (depending
+    on default signedness of char), which can lead to an out of boundary write
+    up to 128 bytes in front of the allocated storage, but limited to NUL
+    byte(s).
+  * CVE-2018-14598:
+    If the server sends a reply in which even the first string would overflow
+    the transmitted bytes, list[0] (or flist[0]) will be set to NULL and a
+    count of 0 is returned. This may trigger a segmentation fault leading to a
+    Denial of Service.
+
+ -- Markus Koschany <a...@debian.org>  Sat, 29 Sep 2018 14:05:05 +0200
+
 libx11 (2:1.6.4-3) unstable; urgency=high
 
   [ Emilio Pozuelo Monfort ]
diff -u libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff 
libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff
--- libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff
+++ libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff
@@ -49,10 +49,8 @@
 Partially submitted upstream.  This is so large I don't expect it to all go in 
at once,
 but any bit would help.  --Nathanael
 
-Index: libx11/nls/compose.dir.pre
-===================================================================
---- libx11.orig/nls/compose.dir.pre
-+++ libx11/nls/compose.dir.pre
+--- a/nls/compose.dir.pre
++++ b/nls/compose.dir.pre
 @@ -4,8 +4,13 @@ XCOMM The first word is the compose tabl
  XCOMM and the second word is the full locale name.
  XCOMM
@@ -234,7 +232,7 @@
  en_US.UTF-8/Compose:          ph_PH.UTF-8
  en_US.UTF-8/Compose:          pl_PL.UTF-8
  en_US.UTF-8/Compose:          pp_AN.UTF-8
-@@ -433,9 +466,11 @@ en_US.UTF-8/Compose:              sd_IN@devanagari.U
+@@ -433,9 +466,11 @@ en_US.UTF-8/Compose:              sd_IN.UTF-8@devana
  en_US.UTF-8/Compose:          se_NO.UTF-8
  en_US.UTF-8/Compose:          sh_BA.UTF-8
  en_US.UTF-8/Compose:          sh_YU.UTF-8
@@ -254,10 +252,8 @@
  en_US.UTF-8/Compose:          tl_PH.UTF-8
  en_US.UTF-8/Compose:          tn_ZA.UTF-8
  en_US.UTF-8/Compose:          tr_TR.UTF-8
-Index: libx11/nls/locale.alias.pre
-===================================================================
---- libx11.orig/nls/locale.alias.pre
-+++ libx11/nls/locale.alias.pre
+--- a/nls/locale.alias.pre
++++ b/nls/locale.alias.pre
 @@ -311,6 +311,12 @@ en_CA.iso88591:                                   
en_CA.ISO8859-1
  en_CA.ISO-8859-1:                             en_CA.ISO8859-1
  en_CA.ISO_8859-1:                             en_CA.ISO8859-1
@@ -332,10 +328,8 @@
  french:                                               fr_FR.ISO8859-1
  french.iso88591:                              fr_CH.ISO8859-1
  galego:                                               gl_ES.ISO8859-1
-Index: libx11/nls/locale.dir.pre
-===================================================================
---- libx11.orig/nls/locale.dir.pre
-+++ libx11/nls/locale.dir.pre
+--- a/nls/locale.dir.pre
++++ b/nls/locale.dir.pre
 @@ -6,8 +6,11 @@ XCOMM
  XCOMM
  
@@ -458,7 +452,7 @@
  en_US.UTF-8/XLC_LOCALE:                       af_ZA.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       am_ET.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       ar_AA.UTF-8
-@@ -297,6 +319,7 @@ en_US.UTF-8/XLC_LOCALE:                    bn_BD.UTF-8
+@@ -298,6 +320,7 @@ en_US.UTF-8/XLC_LOCALE:                    bn_BD.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       bn_IN.UTF-8
  en_US.UTF-8/XLC_LOCALE:                 bo_IN.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       br_FR.UTF-8
@@ -538,7 +532,7 @@
  en_US.UTF-8/XLC_LOCALE:                       pp_AN.UTF-8
 @@ -431,11 +467,13 @@ en_US.UTF-8/XLC_LOCALE:
  en_US.UTF-8/XLC_LOCALE:                 sd_IN.UTF-8
- en_US.UTF-8/XLC_LOCALE:                 sd...@devanagari.utf-8
+ en_US.UTF-8/XLC_LOCALE:                 sd_IN.UTF-8@devanagari
  en_US.UTF-8/XLC_LOCALE:                       se_NO.UTF-8
 +en_US.UTF-8/XLC_LOCALE:            sid_ET.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       sh_BA.UTF-8
@@ -550,7 +544,7 @@
  en_US.UTF-8/XLC_LOCALE:                       sq_AL.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       sr_CS.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       sr_ME.UTF-8
-@@ -451,6 +489,7 @@ en_US.UTF-8/XLC_LOCALE:                    tg_TJ.UTF-8
+@@ -452,6 +490,7 @@ en_US.UTF-8/XLC_LOCALE:                    tg_TJ.UTF-8
  th_TH.UTF-8/XLC_LOCALE:                       th_TH.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       ti_ER.UTF-8
  en_US.UTF-8/XLC_LOCALE:                       ti_ET.UTF-8
diff -u libx11-1.6.4/debian/patches/series libx11-1.6.4/debian/patches/series
--- libx11-1.6.4/debian/patches/series
+++ libx11-1.6.4/debian/patches/series
@@ -5,0 +6,3 @@
+CVE-2018-14599.patch
+CVE-2018-14600.patch
+CVE-2018-14598.patch
only in patch2:
unchanged:
--- libx11-1.6.4.orig/debian/patches/CVE-2018-14598.patch
+++ libx11-1.6.4/debian/patches/CVE-2018-14598.patch
@@ -0,0 +1,42 @@
+From: Markus Koschany <a...@debian.org>
+Date: Sat, 29 Sep 2018 14:13:53 +0200
+Subject: CVE-2018-14598
+
+Origin: 
https://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=e83722768fd5c467ef61fa159e8c6278770b45c2
+---
+ src/GetFPath.c | 5 +++++
+ src/ListExt.c  | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/src/GetFPath.c b/src/GetFPath.c
+index fe37fe8..dac553e 100644
+--- a/src/GetFPath.c
++++ b/src/GetFPath.c
+@@ -78,6 +78,11 @@ char **XGetFontPath(
+                   length = *(unsigned char *)ch;
+                   *ch = '\0'; /* and replace with null-termination */
+                   count++;
++              } else if (i == 0) {
++                  Xfree(flist);
++                  Xfree(ch);
++                  flist = NULL;
++                  break;
+               } else
+                   flist[i] = NULL;
+           }
+diff --git a/src/ListExt.c b/src/ListExt.c
+index 2a2e135..ceeb885 100644
+--- a/src/ListExt.c
++++ b/src/ListExt.c
+@@ -83,6 +83,11 @@ char **XListExtensions(
+                   length = *(unsigned char *)ch;
+                   *ch = '\0'; /* and replace with null-termination */
+                   count++;
++              } else if (i == 0) {
++                  Xfree(list);
++                  Xfree(ch);
++                  list = NULL;
++                  break;
+               } else
+                   list[i] = NULL;
+           }
only in patch2:
unchanged:
--- libx11-1.6.4.orig/debian/patches/CVE-2018-14599.patch
+++ libx11-1.6.4/debian/patches/CVE-2018-14599.patch
@@ -0,0 +1,85 @@
+From: Markus Koschany <a...@debian.org>
+Date: Wed, 29 Aug 2018 07:48:56 +0200
+Subject: CVE-2018-14599
+
+Origin: 
https://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=b469da1430cdcee06e31c6251b83aede072a1ff0
+---
+ src/FontNames.c | 16 ++++------------
+ src/GetFPath.c  |  2 +-
+ src/ListExt.c   | 12 ++++--------
+ 3 files changed, 9 insertions(+), 21 deletions(-)
+
+diff --git a/src/FontNames.c b/src/FontNames.c
+index 31f671c..f185c11 100644
+--- a/src/FontNames.c
++++ b/src/FontNames.c
+@@ -88,24 +88,16 @@ int *actualCount)  /* RETURN */
+        * unpack into null terminated strings.
+        */
+       chstart = ch;
+-      chend = ch + (rlen + 1);
++      chend = ch + rlen;
+       length = *(unsigned char *)ch;
+       *ch = 1; /* make sure it is non-zero for XFreeFontNames */
+       for (i = 0; i < rep.nFonts; i++) {
+           if (ch + length < chend) {
+               flist[i] = ch + 1;  /* skip over length */
+               ch += length + 1;  /* find next length ... */
+-              if (ch <= chend) {
+-                  length = *(unsigned char *)ch;
+-                  *ch = '\0';  /* and replace with null-termination */
+-                  count++;
+-              } else {
+-                    Xfree(chstart);
+-                    Xfree(flist);
+-                    flist = NULL;
+-                    count = 0;
+-                    break;
+-              }
++              length = *(unsigned char *)ch;
++              *ch = '\0';  /* and replace with null-termination */
++              count++;
+           } else {
+                 Xfree(chstart);
+                 Xfree(flist);
+diff --git a/src/GetFPath.c b/src/GetFPath.c
+index abd4a5d..cd56564 100644
+--- a/src/GetFPath.c
++++ b/src/GetFPath.c
+@@ -69,7 +69,7 @@ char **XGetFontPath(
+           /*
+            * unpack into null terminated strings.
+            */
+-          chend = ch + (nbytes + 1);
++          chend = ch + nbytes;
+           length = *ch;
+           for (i = 0; i < rep.nPaths; i++) {
+               if (ch + length < chend) {
+diff --git a/src/ListExt.c b/src/ListExt.c
+index 9074315..421adb4 100644
+--- a/src/ListExt.c
++++ b/src/ListExt.c
+@@ -74,19 +74,15 @@ char **XListExtensions(
+           /*
+            * unpack into null terminated strings.
+            */
+-          chend = ch + (rlen + 1);
++          chend = ch + rlen;
+           length = *ch;
+           for (i = 0; i < rep.nExtensions; i++) {
+               if (ch + length < chend) {
+                   list[i] = ch+1;  /* skip over length */
+                   ch += length + 1; /* find next length ... */
+-                  if (ch <= chend) {
+-                      length = *ch;
+-                      *ch = '\0'; /* and replace with null-termination */
+-                      count++;
+-                  } else {
+-                      list[i] = NULL;
+-                  }
++                  length = *ch;
++                  *ch = '\0'; /* and replace with null-termination */
++                  count++;
+               } else
+                   list[i] = NULL;
+           }
only in patch2:
unchanged:
--- libx11-1.6.4.orig/debian/patches/CVE-2018-14600.patch
+++ libx11-1.6.4/debian/patches/CVE-2018-14600.patch
@@ -0,0 +1,48 @@
+From: Markus Koschany <a...@debian.org>
+Date: Wed, 29 Aug 2018 07:49:14 +0200
+Subject: CVE-2018-14600
+
+Origin: 
https://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=dbf72805fd9d7b1846fe9a11b46f3994bfc27fea
+---
+ src/GetFPath.c | 4 ++--
+ src/ListExt.c  | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/GetFPath.c b/src/GetFPath.c
+index cd56564..c99174a 100644
+--- a/src/GetFPath.c
++++ b/src/GetFPath.c
+@@ -70,12 +70,12 @@ char **XGetFontPath(
+            * unpack into null terminated strings.
+            */
+           chend = ch + nbytes;
+-          length = *ch;
++          length = *(unsigned char *)ch;
+           for (i = 0; i < rep.nPaths; i++) {
+               if (ch + length < chend) {
+                   flist[i] = ch+1;  /* skip over length */
+                   ch += length + 1; /* find next length ... */
+-                  length = *ch;
++                  length = *(unsigned char *)ch;
+                   *ch = '\0'; /* and replace with null-termination */
+                   count++;
+               } else
+diff --git a/src/ListExt.c b/src/ListExt.c
+index 421adb4..6daa14d 100644
+--- a/src/ListExt.c
++++ b/src/ListExt.c
+@@ -75,12 +75,12 @@ char **XListExtensions(
+            * unpack into null terminated strings.
+            */
+           chend = ch + rlen;
+-          length = *ch;
++          length = *(unsigned char *)ch;
+           for (i = 0; i < rep.nExtensions; i++) {
+               if (ch + length < chend) {
+                   list[i] = ch+1;  /* skip over length */
+                   ch += length + 1; /* find next length ... */
+-                  length = *ch;
++                  length = *(unsigned char *)ch;
+                   *ch = '\0'; /* and replace with null-termination */
+                   count++;
+               } else

--- End Message ---
--- Begin Message ---
Version: 9.6

Hi,

The update referenced by each of these bugs was included in this
morning's stretch point release.

Regards,

Adam

--- End Message ---

Reply via email to