[arch-commits] Commit in sudo/trunk (ChangeLog PKGBUILD sudo-1.7.1-setenv.diff)
Allan McRae
allan at archlinux.org
Sat Jun 6 07:34:38 UTC 2009
Date: Saturday, June 6, 2009 @ 03:34:37
Author: allan
Revision: 41642
upgpkg: sudo 1.7.1-2
upstream patch to fis segfault (FS#14464)
Added:
sudo/trunk/sudo-1.7.1-setenv.diff
Modified:
sudo/trunk/ChangeLog
sudo/trunk/PKGBUILD
------------------------+
ChangeLog | 4 ++++
PKGBUILD | 8 ++++++--
sudo-1.7.1-setenv.diff | 41 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 51 insertions(+), 2 deletions(-)
Modified: ChangeLog
===================================================================
--- ChangeLog 2009-06-06 06:28:01 UTC (rev 41641)
+++ ChangeLog 2009-06-06 07:34:37 UTC (rev 41642)
@@ -1,3 +1,7 @@
+2009-06-06 Allan McRae <allan at archlinux.org>
+ * sudo-1.7.1-2
+ * fix segfault in setenv function (FS#14464)
+
2009-04-19 Allan McRae <allan at archlinux.org>
* sudo-1.7.1-1
* upstream update
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2009-06-06 06:28:01 UTC (rev 41641)
+++ PKGBUILD 2009-06-06 07:34:37 UTC (rev 41642)
@@ -4,20 +4,24 @@
pkgname=sudo
pkgver=1.7.1
-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/"
license=('custom')
depends=('glibc' 'pam')
backup=('etc/sudoers' 'etc/pam.d/sudo')
-source=(ftp://ftp.sudo.ws/pub/sudo/$pkgname-$pkgver.tar.gz sudo.pam)
+source=(ftp://ftp.sudo.ws/pub/sudo/$pkgname-$pkgver.tar.gz
+ sudo-1.7.1-setenv.diff
+ sudo.pam)
options=('!libtool' '!makeflags')
md5sums=('af672524b2c854a67612bf4c743f58b8'
+ '010a24456e4dc7b2e904b2e6f18239a2'
'4e7ad4ec8f2fe6a40e12bcb2c0b256e3')
build() {
cd $srcdir/$pkgname-$pkgver || return 1
+ patch -Np1 -i $srcdir/sudo-1.7.1-setenv.diff || return 1
./configure --prefix=/usr --with-pam --libexecdir=/usr/lib \
--with-env-editor --with-all-insults --with-logfac=auth || return 1
Added: sudo-1.7.1-setenv.diff
===================================================================
--- sudo-1.7.1-setenv.diff (rev 0)
+++ sudo-1.7.1-setenv.diff 2009-06-06 07:34:37 UTC (rev 41642)
@@ -0,0 +1,41 @@
+--- sudo/env.c 2009/03/11 23:01:10 1.101
++++ sudo/env.c 2009/04/24 18:53:15 1.102
+@@ -250,23 +250,27 @@ setenv(var, val, overwrite)
+ int overwrite;
+ {
+ char *estring;
++ const char *varend;
+ size_t esize;
++ int len;
+
+- if (strchr(var, '=') != NULL) {
+- errno = EINVAL;
+- return(-1);
+- }
++ /*
++ * POSIX says a var name with '=' is an error but BSD
++ * just ignores the '=' and anything after it.
++ */
++ for (varend = var; *varend && *varend != '='; varend++)
++ ;
+
+- esize = strlen(var) + 1 + strlen(val) + 1;
++ if (val == NULL)
++ val = ""; /* glibc treats a NULL val as "" */
++
++ esize = (size_t)(varend - var) + 1 + strlen(val) + 1;
+ estring = emalloc(esize);
+
+- /* Build environment string and insert it. */
+- if (strlcpy(estring, var, esize) >= esize ||
+- strlcat(estring, "=", esize) >= esize ||
+- strlcat(estring, val, esize) >= esize) {
+-
++ len = snprintf(estring, esize, "%.*s=%s", (int)(varend - var), var, val);
++ if (len < 0 && len >= esize)
+ errorx(1, "internal error, setenv() overflow");
+- }
++
+ /* Sync env.envp with environ as needed. */
+ if (env.envp != environ) {
+ char **ep;
More information about the arch-commits
mailing list