[arch-commits] Commit in sudo/trunk (PKGBUILD no-tty.patch)
Felix Yan
fyan at archlinux.org
Wed Jul 22 08:11:43 UTC 2015
Date: Wednesday, July 22, 2015 @ 10:11:43
Author: fyan
Revision: 242423
upgpkg: sudo 1.8.14.p2-2
add patch to make sudo work again when no tty present (FS#45735)
Added:
sudo/trunk/no-tty.patch
Modified:
sudo/trunk/PKGBUILD
--------------+
PKGBUILD | 12 ++++-
no-tty.patch | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 125 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2015-07-22 07:53:48 UTC (rev 242422)
+++ PKGBUILD 2015-07-22 08:11:43 UTC (rev 242423)
@@ -6,7 +6,7 @@
pkgname=sudo
_sudover=1.8.14p2
pkgver=${_sudover/p/.p}
-pkgrel=1
+pkgrel=2
pkgdesc="Give certain users the ability to run some commands as root"
arch=('i686' 'x86_64')
url="http://www.sudo.ws/sudo/"
@@ -16,12 +16,18 @@
backup=('etc/sudoers' 'etc/pam.d/sudo')
install=$pkgname.install
source=(http://www.sudo.ws/sudo/dist/$pkgname-$_sudover.tar.gz{,.sig}
- sudo.pam)
+ sudo.pam no-tty.patch)
sha256sums=('b4bca9cca52fc6a409709995014af5e9fb905a4a6c5bda977f78e568954dfe21'
'SKIP'
- 'd1738818070684a5d2c9b26224906aad69a4fea77aabd960fc2675aee2df1fa2')
+ 'd1738818070684a5d2c9b26224906aad69a4fea77aabd960fc2675aee2df1fa2'
+ '5f453de28dcd923d2328bf79bfa6d068a44532fe07e3c85e74cb1f78d74231d9')
validpgpkeys=('CCB24BE9E9481B15D34159535A89DFA27EE470C4')
+prepare() {
+ cd "$srcdir/$pkgname-$_sudover"
+ patch -p1 -i ../no-tty.patch
+}
+
build() {
cd "$srcdir/$pkgname-$_sudover"
Added: no-tty.patch
===================================================================
--- no-tty.patch (rev 0)
+++ no-tty.patch 2015-07-22 08:11:43 UTC (rev 242423)
@@ -0,0 +1,116 @@
+
+# HG changeset patch
+# User Todd C. Miller <Todd.Miller at courtesan.com>
+# Date 1437513649 21600
+# Node ID ff7b12bb0638cb13e575927e2e938e13b83b0331
+# Parent 0e728a1eb07ae71e5bf1fd9b9f014702a678cb44
+Fix errno value from get_process_ttyname() when no tty is present.
+
+diff -r 0e728a1eb07a -r ff7b12bb0638 src/ttyname.c
+--- a/src/ttyname.c Tue Jul 21 15:02:56 2015 -0600
++++ b/src/ttyname.c Tue Jul 21 15:20:49 2015 -0600
+@@ -382,8 +382,8 @@
+ {
+ struct sudo_kinfo_proc *ki_proc = NULL;
+ size_t size = sizeof(*ki_proc);
++ int mib[6], rc, serrno = errno;
+ char *rval = NULL;
+- int mib[6], rc;
+ debug_decl(get_process_ttyname, SUDO_DEBUG_UTIL)
+
+ /*
+@@ -407,8 +407,10 @@
+ ki_proc = kp;
+ rc = sysctl(mib, sudo_kp_namelen, ki_proc, &size, NULL, 0);
+ } while (rc == -1 && errno == ENOMEM);
++ errno = ENOENT;
+ if (rc != -1) {
+ if ((dev_t)ki_proc->sudo_kp_tdev != (dev_t)-1) {
++ errno = serrno;
+ rval = sudo_ttyname_dev(ki_proc->sudo_kp_tdev, name, namelen);
+ if (rval == NULL) {
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+@@ -435,7 +437,7 @@
+ char path[PATH_MAX], *rval = NULL;
+ struct psinfo psinfo;
+ ssize_t nread;
+- int fd;
++ int fd, serrno = errno;
+ debug_decl(get_process_ttyname, SUDO_DEBUG_UTIL)
+
+ /* Try to determine the tty from pr_ttydev in /proc/pid/psinfo. */
+@@ -449,11 +451,16 @@
+ if ((psinfo.pr_ttydev & DEVNO64) && sizeof(dev_t) == 4)
+ rdev = makedev(major64(psinfo.pr_ttydev), minor64(psinfo.pr_ttydev));
+ #endif
+- if (rdev != (dev_t)-1)
++ if (rdev != (dev_t)-1) {
++ errno = serrno;
+ rval = sudo_ttyname_dev(rdev, name, namelen);
++ got done;
++ }
+ }
+ }
++ errno = ENOENT;
+
++done:
+ if (rval == NULL)
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to resolve tty via %s", path);
+@@ -471,6 +478,7 @@
+ char path[PATH_MAX], *line = NULL;
+ char *rval = NULL;
+ size_t linesize = 0;
++ int serrno = errno;
+ ssize_t len;
+ FILE *fp;
+ debug_decl(get_process_ttyname, SUDO_DEBUG_UTIL)
+@@ -495,8 +503,11 @@
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: tty device %s: %s", path, cp, errstr);
+ }
+- if (tdev > 0)
++ if (tdev > 0) {
++ errno = serrno;
+ rval = sudo_ttyname_dev(tdev, name, namelen);
++ goto done;
++ }
+ break;
+ }
+ cp = ep + 1;
+@@ -505,7 +516,9 @@
+ }
+ free(line);
+ }
++ errno = ENOENT;
+
++done:
+ if (rval == NULL)
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to resolve tty via %s", path);
+@@ -522,7 +535,7 @@
+ {
+ struct pst_status pstat;
+ char *rval = NULL;
+- int rc;
++ int rc, serrno = errno;
+ debug_decl(get_process_ttyname, SUDO_DEBUG_UTIL)
+
+ /*
+@@ -532,10 +545,15 @@
+ rc = pstat_getproc(&pstat, sizeof(pstat), (size_t)0, (int)getpid());
+ if (rc != -1 || errno == EOVERFLOW) {
+ if (pstat.pst_term.psd_major != -1 && pstat.pst_term.psd_minor != -1) {
++ errno = serrno;
+ rval = sudo_ttyname_dev(makedev(pstat.pst_term.psd_major,
+ pstat.pst_term.psd_minor), name, namelen);
++ goto done;
+ }
+ }
++ errno = ENOENT;
++
++done:
+ if (rval == NULL)
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to resolve tty via pstat");
+
More information about the arch-commits
mailing list