summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/fuse/APKBUILD45
-rw-r--r--user/fuse/fix-realpath.patch28
2 files changed, 73 insertions, 0 deletions
diff --git a/user/fuse/APKBUILD b/user/fuse/APKBUILD
new file mode 100644
index 000000000..92840ed41
--- /dev/null
+++ b/user/fuse/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=fuse
+pkgver=2.9.8
+pkgrel=2
+pkgdesc="Linux Filesystem in Userspace (legacy version)"
+url="https://github.com/libfuse/libfuse"
+arch="all"
+options="suid !check" # No test suite.
+license="GPL-2.0-only AND LGPL-2.1-only AND (GPL-2.0-only OR BSD-2-Clause)"
+depends="fuse-common"
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/libfuse/libfuse/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz
+ fix-realpath.patch
+"
+
+# secfixes:
+# 2.9.8-r0:
+# - CVE-2018-10906
+
+build() {
+ cd "$builddir"
+ UDEV_RULES_PATH='/lib/udev/rules.d' ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-example \
+ --enable-lib \
+ --enable-util
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm -r "$pkgdir"/dev "$pkgdir"/etc/init.d
+}
+
+sha512sums="0a9b14d96c6f98f5c903baf00114bfff72f9aeb97224702bbed370516b2b582401d5b436fcef979918ffd85d69ba4a82c8f722c0b35ebd50f7aa5f4ddfdcf8ad fuse-2.9.8.tar.gz
+5672ceb35acabb4bd97b6efc30614f22def62882fe198e2a8598a074d45b6b5337c082a5e09b5e399b6e5212dc1fbde9071c2a5051534c32091444c350b9c657 fix-realpath.patch"
diff --git a/user/fuse/fix-realpath.patch b/user/fuse/fix-realpath.patch
new file mode 100644
index 000000000..1199eb338
--- /dev/null
+++ b/user/fuse/fix-realpath.patch
@@ -0,0 +1,28 @@
+--- fuse-2.9.3.orig/util/fusermount.c 2015-02-07 08:58:54.000000000 -0200
++++ fuse-2.9.3/util/fusermount.c 2015-02-09 09:15:16.737367957 -0200
+@@ -1255,19 +1255,16 @@
+
+ origmnt = argv[optind];
+
+- drop_privs();
+ mnt = fuse_mnt_resolve_path(progname, origmnt);
+- if (mnt != NULL) {
+- res = chdir("/");
+- if (res == -1) {
+- fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+- exit(1);
+- }
+- }
+- restore_privs();
+ if (mnt == NULL)
+ exit(1);
+
++ res = chdir("/");
++ if (res == -1) {
++ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
++ exit(1);
++ }
++
+ umask(033);
+ if (unmount)
+ goto do_unmount;