fuse: fix exec environment for mount and umount
authorNicolas Thill <nico@openwrt.org>
Sun, 24 May 2015 17:56:26 +0000 (17:56 +0000)
committerNicolas Thill <nico@openwrt.org>
Sun, 24 May 2015 17:56:26 +0000 (17:56 +0000)
 * add upstream patch (CVE-2015-3202)
 * refresh patches
 * bump release number

Signed-off-by: Nicolas Thill <nico@openwrt.org>
SVN-Revision: 45744

package/utils/fuse/Makefile
package/utils/fuse/patches/001-fix_exec_environment_for_mount_and_umount.patch [new file with mode: 0644]
package/utils/fuse/patches/200-backport_arm64_fuse_kernel_h_clean_includes.patch

index 43f1ef4dd74ad5678f807cc260667907fdfd0ae7..787a66e3ca4b63f8cfe713bc5a7a62305bb8253a 100644 (file)
@@ -1,5 +1,5 @@
 # 
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=fuse
 PKG_VERSION:=2.9.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/$(PKG_NAME)
diff --git a/package/utils/fuse/patches/001-fix_exec_environment_for_mount_and_umount.patch b/package/utils/fuse/patches/001-fix_exec_environment_for_mount_and_umount.patch
new file mode 100644 (file)
index 0000000..392bb5e
--- /dev/null
@@ -0,0 +1,59 @@
+From cfe13b7a217075ae741c018da50cd600e5330de2 Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <mszeredi@suse.cz>
+Date: Fri, 22 May 2015 10:58:43 +0200
+Subject: [PATCH] libfuse: fix exec environment for mount and umount
+
+Found by Tavis Ormandy (CVE-2015-3202).
+---
+--- a/lib/mount_util.c
++++ b/lib/mount_util.c
+@@ -95,10 +95,12 @@ static int add_mount(const char *prognam
+               goto out_restore;
+       }
+       if (res == 0) {
++              char *env = NULL;
++
+               sigprocmask(SIG_SETMASK, &oldmask, NULL);
+               setuid(geteuid());
+-              execl("/bin/mount", "/bin/mount", "--no-canonicalize", "-i",
+-                    "-f", "-t", type, "-o", opts, fsname, mnt, NULL);
++              execle("/bin/mount", "/bin/mount", "--no-canonicalize", "-i",
++                     "-f", "-t", type, "-o", opts, fsname, mnt, NULL, &env);
+               fprintf(stderr, "%s: failed to execute /bin/mount: %s\n",
+                       progname, strerror(errno));
+               exit(1);
+@@ -146,10 +148,17 @@ static int exec_umount(const char *progn
+               goto out_restore;
+       }
+       if (res == 0) {
++              char *env = NULL;
++
+               sigprocmask(SIG_SETMASK, &oldmask, NULL);
+               setuid(geteuid());
+-              execl("/bin/umount", "/bin/umount", "-i", rel_mnt,
+-                    lazy ? "-l" : NULL, NULL);
++              if (lazy) {
++                      execle("/bin/umount", "/bin/umount", "-i", rel_mnt,
++                             "-l", NULL, &env);
++              } else {
++                      execle("/bin/umount", "/bin/umount", "-i", rel_mnt,
++                             NULL, &env);
++              }
+               fprintf(stderr, "%s: failed to execute /bin/umount: %s\n",
+                       progname, strerror(errno));
+               exit(1);
+@@ -205,10 +214,12 @@ static int remove_mount(const char *prog
+               goto out_restore;
+       }
+       if (res == 0) {
++              char *env = NULL;
++
+               sigprocmask(SIG_SETMASK, &oldmask, NULL);
+               setuid(geteuid());
+-              execl("/bin/umount", "/bin/umount", "--no-canonicalize", "-i",
+-                    "--fake", mnt, NULL);
++              execle("/bin/umount", "/bin/umount", "--no-canonicalize", "-i",
++                     "--fake", mnt, NULL, &env);
+               fprintf(stderr, "%s: failed to execute /bin/umount: %s\n",
+                       progname, strerror(errno));
+               exit(1);
index 8436224e96e58e44af498821bb95c4f4fd32e34c..d45da84ccae92a226df0433b544a9244aadcb54f 100644 (file)
@@ -8,11 +8,9 @@ using <stdint.h> types.
 ---
 (limited to 'include/fuse_kernel.h')
 
-diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
-index 501450c..df8e9b9 100644
 --- a/include/fuse_kernel.h
 +++ b/include/fuse_kernel.h
-@@ -91,12 +91,16 @@
+@@ -88,12 +88,16 @@
  #ifndef _LINUX_FUSE_H
  #define _LINUX_FUSE_H
  
@@ -30,5 +28,3 @@ index 501450c..df8e9b9 100644
  
  /*
   * Version negotiation:
---
-cgit v0.9.0.3-67-gacbf