Bug#880630: jessie-pu: package liblouis/2.5.3-3

Samuel Thibault sthibault at debian.org
Fri Nov 3 00:54:32 UTC 2017


Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org at packages.debian.org
Usertags: pu

Hello,

Bug#880621 reports that Jessie is affected by CVE-2014-8184.  I'm
proposing to upload there the RedHat fix plus a fix for that fix (it
didn't actually take care of issues in the strncpy call). Debdiff is
attached.

Samuel

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable-debug'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.13.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
-------------- next part --------------
diff -Nru liblouis-2.5.3/debian/changelog liblouis-2.5.3/debian/changelog
--- liblouis-2.5.3/debian/changelog	2014-06-24 23:33:27.000000000 +0200
+++ liblouis-2.5.3/debian/changelog	2017-11-03 01:14:02.000000000 +0100
@@ -1,3 +1,10 @@
+liblouis (2.5.3-3+deb8u1) jessie; urgency=medium
+
+  * Apply RedHat's patch to fix CVE-2014-8184 (Closes: Bug#880621).
+  * Fix RedHat's patch.
+
+ -- Samuel Thibault <sthibault at debian.org>  Fri, 03 Nov 2017 01:14:02 +0100
+
 liblouis (2.5.3-3) unstable; urgency=low
 
   [ Samuel Thibault ]
diff -Nru liblouis-2.5.3/debian/patches/CVE-2014-8184 liblouis-2.5.3/debian/patches/CVE-2014-8184
--- liblouis-2.5.3/debian/patches/CVE-2014-8184	1970-01-01 01:00:00.000000000 +0100
+++ liblouis-2.5.3/debian/patches/CVE-2014-8184	2017-11-03 01:14:02.000000000 +0100
@@ -0,0 +1,99 @@
+https://github.com/liblouis/liblouis/issues/425
+https://bugzilla.redhat.com/show_bug.cgi?id=1492701
+https://access.redhat.com/errata/RHSA-2017:3111
+
+From 2fe2b279994e3ed70bae461e284702cc1c7d4665 Mon Sep 17 00:00:00 2001
+From: Raphael Sanchez Prudencio <rsprudencio at redhat.com>
+Date: Mon, 18 Sep 2017 18:44:31 +0200
+Subject: [PATCH 5/7] Fix multiple stack-based buffer overflows in findTable().
+
+Fixes CVE-2014-8184.
+---
+ liblouis/compileTranslationTable.c | 35 +++++++++++------------------------
+ 1 file changed, 11 insertions(+), 24 deletions(-)
+
+diff --git a/liblouis/compileTranslationTable.c b/liblouis/compileTranslationTable.c
+index ec4963f0..25c0208f 100644
+--- a/liblouis/compileTranslationTable.c
++++ b/liblouis/compileTranslationTable.c
+@@ -4502,8 +4502,7 @@ findTable (const char *tableName)
+   char trialPath[MAXSTRING];
+   if (tableName == NULL || tableName[0] == 0)
+     return NULL;
+-  strcpy (trialPath, tablePath);
+-  strcat (trialPath, tableName);
++  snprintf (trialPath, MAXSTRING-1, "%s%s", tablePath, tableName);
+   if ((tableFile = fopen (trialPath, "rb")))
+     return tableFile;
+   pathEnd[0] = DIR_SEP;
+@@ -4522,18 +4521,15 @@ findTable (const char *tableName)
+ 	    break;
+ 	if (k == listLength || k == 0)
+ 	  {			/* Only one file */
+-	    strcpy (trialPath, pathList);
+-	    strcat (trialPath, pathEnd);
+-	    strcat (trialPath, tableName);
++	    snprintf (trialPath, MAXSTRING-1, "%s%s%s", pathList, pathEnd, tableName);
+ 	    if ((tableFile = fopen (trialPath, "rb")))
+ 	      break;
+ 	  }
+ 	else
+ 	  {			/* Compile a list of files */
+-	    strncpy (trialPath, pathList, k);
+-	    trialPath[k] = 0;
+-	    strcat (trialPath, pathEnd);
+-	    strcat (trialPath, tableName);
++	    char path[MAXSTRING];
++	    strncpy (path, pathList, k);
++	    snprintf (trialPath, MAXSTRING-1, "%s%s%s", path, pathEnd, tableName);
+ 	    currentListPos = k + 1;
+ 	    if ((tableFile = fopen (trialPath, "rb")))
+ 	      break;
+@@ -4542,11 +4538,8 @@ findTable (const char *tableName)
+ 		for (k = currentListPos; k < listLength; k++)
+ 		  if (pathList[k] == ',')
+ 		    break;
+-		strncpy (trialPath,
+-			 &pathList[currentListPos], k - currentListPos);
+-		trialPath[k - currentListPos] = 0;
+-		strcat (trialPath, pathEnd);
+-		strcat (trialPath, tableName);
++		strncpy (path, &pathList[currentListPos], k - currentListPos);
++		snprintf (trialPath, MAXSTRING-1, "%s%s%s", path, pathEnd, tableName);
+ 		if ((tableFile = fopen (trialPath, "rb")))
+ 		  currentListPos = k + 1;
+ 		break;
+@@ -4564,26 +4557,20 @@ findTable (const char *tableName)
+   pathList = lou_getDataPath ();
+   if (pathList)
+     {
+-      strcpy (trialPath, pathList);
+-      strcat (trialPath, pathEnd);
+ #ifdef _WIN32
+-      strcat (trialPath, "liblouis\\tables\\");
++      snprintf (trialPath, MAXSTRING-1, "%s%sliblouis\\tables\\%s", pathList, pathEnd, tableName);
+ #else
+-      strcat (trialPath, "liblouis/tables/");
++      snprintf (trialPath, MAXSTRING-1, "%s%sliblouis/tables/%s", pathList, pathEnd, tableName);
+ #endif
+-      strcat (trialPath, tableName);
+       if ((tableFile = fopen (trialPath, "rb")))
+ 	return tableFile;
+     }
+   /* See if table on installed or program path. */
+ #ifdef _WIN32
+-  strcpy (trialPath, lou_getProgramPath ());
+-  strcat (trialPath, "\\share\\liblouss\\tables\\");
++  snprintf (trialPath, MAXSTRING-1, "%s\\share\\liblouss\\tables\\%s", lou_getProgramPath(), tableName);
+ #else
+-  strcpy (trialPath, TABLESDIR);
+-  strcat (trialPath, pathEnd);
++  snprintf (trialPath, MAXSTRING-1, "%s%s%s", TABLESDIR, pathEnd, tableName);
+ #endif
+-  strcat (trialPath, tableName);
+   if ((tableFile = fopen (trialPath, "rb")))
+     return tableFile;
+   return NULL;
+-- 
+2.13.5
+
diff -Nru liblouis-2.5.3/debian/patches/CVE-2014-8184-fix liblouis-2.5.3/debian/patches/CVE-2014-8184-fix
--- liblouis-2.5.3/debian/patches/CVE-2014-8184-fix	1970-01-01 01:00:00.000000000 +0100
+++ liblouis-2.5.3/debian/patches/CVE-2014-8184-fix	2017-11-03 01:14:02.000000000 +0100
@@ -0,0 +1,33 @@
+The RedHat CVE-2014-8184 patch did not fix the potential buffer overruns
+and missing trailing \0 from the strncpy call.
+---
+ liblouis/compileTranslationTable.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/liblouis/compileTranslationTable.c
++++ b/liblouis/compileTranslationTable.c
+@@ -4534,6 +4534,8 @@ findTable (const char *tableName)
+ 	int listLength;
+ 	int currentListPos = 0;
+ 	listLength = strlen (pathList);
++	if (listLength >= MAXSTRING)
++	  listLength = MAXSTRING-1;
+ 	for (k = 0; k < listLength; k++)
+ 	  if (pathList[k] == ',')
+ 	    break;
+@@ -4547,6 +4549,7 @@ findTable (const char *tableName)
+ 	  {			/* Compile a list of files */
+ 	    char path[MAXSTRING];
+ 	    strncpy (path, pathList, k);
++	    path[k] = 0;
+ 	    snprintf (trialPath, MAXSTRING-1, "%s%s%s", path, pathEnd, tableName);
+ 	    currentListPos = k + 1;
+ 	    if ((tableFile = fopen (trialPath, "rb")))
+@@ -4557,6 +4560,7 @@ findTable (const char *tableName)
+ 		  if (pathList[k] == ',')
+ 		    break;
+ 		strncpy (path, &pathList[currentListPos], k - currentListPos);
++		path[k - currentListPos] = 0;
+ 		snprintf (trialPath, MAXSTRING-1, "%s%s%s", path, pathEnd, tableName);
+ 		if ((tableFile = fopen (trialPath, "rb")))
+ 		  currentListPos = k + 1;
diff -Nru liblouis-2.5.3/debian/patches/series liblouis-2.5.3/debian/patches/series
--- liblouis-2.5.3/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ liblouis-2.5.3/debian/patches/series	2017-11-03 01:14:02.000000000 +0100
@@ -0,0 +1,2 @@
+CVE-2014-8184
+CVE-2014-8184-fix


More information about the Pkg-a11y-devel mailing list