From: Wayne Davison Date: Sun, 13 Dec 2009 00:43:13 +0000 (-0800) Subject: Use seteuid() (if available) when using setuid(). X-Git-Tag: v3.0.7pre1~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=523dad4bb3f75e4e313aa2a8d08a98028b1d7a52;p=thirdparty%2Frsync.git Use seteuid() (if available) when using setuid(). --- diff --git a/clientserver.c b/clientserver.c index c8d2a0e7..ef559676 100644 --- a/clientserver.c +++ b/clientserver.c @@ -722,7 +722,11 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) } #endif - if (setuid(uid)) { + if (setuid(uid) < 0 +#ifdef HAVE_SETEUID + || seteuid(uid) < 0 +#endif + ) { rsyserr(FLOG, errno, "setuid %d failed", (int)uid); io_printf(f_out, "@ERROR: setuid failed\n"); return -1; diff --git a/configure.in b/configure.in index ee0c0a64..f0f8ab17 100644 --- a/configure.in +++ b/configure.in @@ -570,7 +570,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strdup chown chmod lchmod mknod mkfifo \ memmove lchown vsnprintf snprintf vasprintf asprintf setsid strpbrk \ strlcat strlcpy strtol mallinfo getgroups setgroups geteuid getegid \ setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \ - strerror putenv iconv_open locale_charset nl_langinfo getxattr \ + seteuid strerror putenv iconv_open locale_charset nl_langinfo getxattr \ extattr_get_link sigaction sigprocmask setattrlist) dnl cygwin iconv.h defines iconv_open as libiconv_open