dash: update to 0.5.9.
This commit is contained in:
parent
6adf2e7fa7
commit
ff033d1c13
|
@ -1,60 +0,0 @@
|
||||||
From 7df60e06e6a176e2ee177df015d5e7ecc80ed229 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonathan Nieder <jrnieder@gmail.com>
|
|
||||||
Date: Mon, 26 Sep 2011 16:16:37 -0500
|
|
||||||
Subject: [BUILTIN] Fix "test -x" as root on platforms with old-fashioned
|
|
||||||
faccessat()
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
When dash switched from its own emulation to the true faccessat in
|
|
||||||
v0.5.7~54 (2010-04-02), on some platforms (e.g., old versions of
|
|
||||||
glibc-bsd), "test -x <path>" started returning true on all files when
|
|
||||||
run as root. This violates POSIX.1-2008 §4.4 "File Access
|
|
||||||
Permission", which says:
|
|
||||||
|
|
||||||
If execute permission is requested, access shall be granted
|
|
||||||
if execute permission is granted to at least one user by the
|
|
||||||
file permission bits or by an alternate access control
|
|
||||||
mechanism; otherwise, access shall be denied.
|
|
||||||
|
|
||||||
Unfortunately, for historical reasons, access() and faccessat() are
|
|
||||||
allowed by POSIX to return success for X_OK when the current process
|
|
||||||
is privileged even when the above condition is not fulfilled and
|
|
||||||
actual execution would fail. Work around this by checking the
|
|
||||||
permissions bits when mode == X_OK and geteuid() == 0.
|
|
||||||
|
|
||||||
Reported-by: Christoph Egger <christoph@debian.org>
|
|
||||||
Analysis-by: Petr Salinger <Petr.Salinger@seznam.cz>
|
|
||||||
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
|
|
||||||
---
|
|
||||||
src/bltin/test.c | 11 +++++++++++
|
|
||||||
1 files changed, 11 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/bltin/test.c b/src/bltin/test.c
|
|
||||||
index 90135e14..1093b59f 100644
|
|
||||||
--- src/bltin/test.c
|
|
||||||
+++ src/bltin/test.c
|
|
||||||
@@ -485,8 +485,19 @@ equalf (const char *f1, const char *f2)
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_FACCESSAT
|
|
||||||
+static int has_exec_bit_set(const char *path)
|
|
||||||
+{
|
|
||||||
+ struct stat64 st;
|
|
||||||
+
|
|
||||||
+ if (stat64(path, &st))
|
|
||||||
+ return 0;
|
|
||||||
+ return st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int test_file_access(const char *path, int mode)
|
|
||||||
{
|
|
||||||
+ if (mode == X_OK && geteuid() == 0 && !has_exec_bit_set(path))
|
|
||||||
+ return 0;
|
|
||||||
return !faccessat(AT_FDCWD, path, mode, AT_EACCESS);
|
|
||||||
}
|
|
||||||
#else /* HAVE_FACCESSAT */
|
|
||||||
--
|
|
||||||
1.7.7.rc1
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'dash'
|
# Template file for 'dash'
|
||||||
pkgname=dash
|
pkgname=dash
|
||||||
version=0.5.8
|
version=0.5.9
|
||||||
revision=6
|
revision=1
|
||||||
build_style=gnu-configure
|
build_style=gnu-configure
|
||||||
hostmakedepends="bison"
|
hostmakedepends="bison"
|
||||||
register_shell="/bin/sh"
|
register_shell="/bin/sh"
|
||||||
|
@ -10,7 +10,7 @@ maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||||
homepage="http://gondor.apana.org.au/~herbert/dash/"
|
homepage="http://gondor.apana.org.au/~herbert/dash/"
|
||||||
license="BSD"
|
license="BSD"
|
||||||
distfiles="http://gondor.apana.org.au/~herbert/dash/files/$pkgname-$version.tar.gz"
|
distfiles="http://gondor.apana.org.au/~herbert/dash/files/$pkgname-$version.tar.gz"
|
||||||
checksum=c6db3a237747b02d20382a761397563d813b306c020ae28ce25a1c3915fac60f
|
checksum=92793b14c017d79297001556389442aeb9e3c1cc559fd178c979169b1a47629c
|
||||||
|
|
||||||
alternatives="
|
alternatives="
|
||||||
sh:sh:/usr/bin/dash
|
sh:sh:/usr/bin/dash
|
||||||
|
|
Loading…
Reference in New Issue