Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-1.9.git;a=commitdiff;h=ef225be9c5d5e94c272a7d92c4c5ba8334240e37

commit ef225be9c5d5e94c272a7d92c4c5ba8334240e37
Author: kikadf <[email protected]>
Date:   Thu Mar 13 09:00:44 2014 +0100

udisks-1.0.4-8arcturus1-x86_64

* Fix CVE-2014-0004

diff --git a/source/xapps/udisks/CVE-2014-0004.patch 
b/source/xapps/udisks/CVE-2014-0004.patch
new file mode 100644
index 0000000..6b7483e
--- /dev/null
+++ b/source/xapps/udisks/CVE-2014-0004.patch
@@ -0,0 +1,87 @@
+From ebf61ed8471a45cf8bce7231de00cb1bbc140708 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <[email protected]>
+Date: Wed, 5 Mar 2014 14:07:44 +0100
+Subject: [PATCH] Fix buffer overflow in mount path parsing
+
+In the mount monitor we parse mount points from /proc/self/mountinfo.  Ensure
+that we don't overflow the buffers on platforms where mount paths could be
+longer than PATH_MAX (unknown if that can actually happen), as at least the
+mount paths for hotpluggable devices are somewhat user-controlled.
+
+Thanks to Florian Weimer for discovering this bug, and to David Zeuthen
+for his initial patch!
+
+CVE-2014-0004
+---
+ src/mount-monitor.c | 21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/src/mount-monitor.c b/src/mount-monitor.c
+index d541deb..573a69c 100644
+--- a/src/mount-monitor.c
++++ b/src/mount-monitor.c
+@@ -39,6 +39,11 @@
+ #include "mount.h"
+ #include "private.h"
+
++/* build a %Ns format string macro with N == PATH_MAX */
++#define xstr(s) str(s)
++#define str(s) #s
++#define PATH_MAX_FMT "%" xstr(PATH_MAX) "s"
++
+ 
/*--------------------------------------------------------------------------------------------------------------*/
+
+ enum
+@@ -320,8 +325,8 @@ mount_monitor_ensure (MountMonitor *monitor)
+       guint mount_id;
+       guint parent_id;
+       guint major, minor;
+-      gchar encoded_root[PATH_MAX];
+-      gchar encoded_mount_point[PATH_MAX];
++      gchar encoded_root[PATH_MAX + 1];
++      gchar encoded_mount_point[PATH_MAX + 1];
+       gchar *mount_point;
+       dev_t dev;
+
+@@ -329,7 +334,7 @@ mount_monitor_ensure (MountMonitor *monitor)
+         continue;
+
+       if (sscanf (lines[n],
+-                  "%d %d %d:%d %s %s",
++                  "%d %d %d:%d " PATH_MAX_FMT " " PATH_MAX_FMT,
+                   &mount_id,
+                   &parent_id,
+                   &major,
+@@ -340,6 +345,8 @@ mount_monitor_ensure (MountMonitor *monitor)
+           g_warning ("Error parsing line '%s'", lines[n]);
+           continue;
+         }
++      encoded_root[sizeof encoded_root - 1] = '\0';
++      encoded_mount_point[sizeof encoded_mount_point - 1] = '\0';
+
+       /* ignore mounts where only a subtree of a filesystem is mounted */
+       if (g_strcmp0 (encoded_root, "/") != 0)
+@@ -358,15 +365,17 @@ mount_monitor_ensure (MountMonitor *monitor)
+           sep = strstr (lines[n], " - ");
+           if (sep != NULL)
+             {
+-              gchar fstype[PATH_MAX];
+-              gchar mount_source[PATH_MAX];
++              gchar fstype[PATH_MAX + 1];
++              gchar mount_source[PATH_MAX + 1];
+               struct stat statbuf;
+
+-              if (sscanf (sep + 3, "%s %s", fstype, mount_source) != 2)
++              if (sscanf (sep + 3, PATH_MAX_FMT " " PATH_MAX_FMT, fstype, 
mount_source) != 2)
+                 {
+                   g_warning ("Error parsing things past - for '%s'", 
lines[n]);
+                   continue;
+                 }
++              fstype[sizeof fstype - 1] = '\0';
++              mount_source[sizeof mount_source - 1] = '\0';
+
+               if (g_strcmp0 (fstype, "btrfs") != 0)
+                 continue;
+--
+1.9.0
+
diff --git a/source/xapps/udisks/FrugalBuild b/source/xapps/udisks/FrugalBuild
index 09df150..1e28208 100644
--- a/source/xapps/udisks/FrugalBuild
+++ b/source/xapps/udisks/FrugalBuild
@@ -1,9 +1,11 @@
# Compiling time: 0.07 SBU
# Maintainer: bouleetbil <[email protected]>

+options+=('asneeded')
+
pkgname=udisks
pkgver=1.0.4
-pkgrel=7
+pkgrel=8arcturus1
pkgdesc="Storage Management Service"
url="http://www.freedesktop.org/wiki/Software/udisks";
depends=('dbus-glib' 'polkit' 'parted>=3.1-2' 'lvm2>=2.02.96' \
@@ -22,6 +24,12 @@ sha1sums=('10d2acfd6e6ff4c8d9d962af1fb1856a885e3219' \
'85121f859c0a13e744f34948826a26f6527f5388')
replaces=('devicekit-disks')

+
+# FSA fix ***
+source=(${source[@]} CVE-2014-0004.patch)
+sha1sums=(${sha1sums[@]} '714572ee4083a64829fb96d5e070eb2088c89538')
+# ***********
+
build()
{
Fbuild
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to