diff --git a/configure.ac b/configure.ac index c2bdf6ea9..34f25e1f4 100644 --- a/configure.ac +++ b/configure.ac @@ -511,7 +511,7 @@ LIBS=$LIBS_COMMON # Check presense of various header files # -AC_CHECK_HEADERS([getopt.h termios.h sys/resource.h term.h ncurses/term.h ncurses.h curses.h stropts.h siginfo.h sys/select.h sys/ioctl.h execinfo.h spawn.h sys/un.h sys/ucred.h ucred.h ]) +AC_CHECK_HEADERS([getopt.h termios.h sys/resource.h term.h ncurses/term.h ncurses.h curses.h stropts.h siginfo.h sys/select.h sys/ioctl.h execinfo.h spawn.h]) if test x$local_gettext != xno; then AC_CHECK_HEADERS([libintl.h]) @@ -652,7 +652,7 @@ fi AC_CHECK_FUNCS( wcsdup wcsndup wcslen wcscasecmp wcsncasecmp fwprintf ) AC_CHECK_FUNCS( futimes wcwidth wcswidth wcstok fputwc fgetwc ) AC_CHECK_FUNCS( wcstol wcslcat wcslcpy lrand48_r killpg ) -AC_CHECK_FUNCS( backtrace backtrace_symbols sysconf getifaddrs getpeerucred getpeereid ) +AC_CHECK_FUNCS( backtrace backtrace_symbols sysconf getifaddrs ) if test x$local_gettext != xno; then AC_CHECK_FUNCS( gettext dcgettext ) diff --git a/doc_src/license.hdr b/doc_src/license.hdr index 90a8b8619..2225a0850 100644 --- a/doc_src/license.hdr +++ b/doc_src/license.hdr @@ -1398,33 +1398,4 @@ POSSIBILITY OF SUCH DAMAGES.

-


- -

License for getpeereid

- -\c fish contains code imported from the PostgreSQL project under -license, namely the getpeereid fallback function. This code is copyrighted -by: - -Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group - -Portions Copyright (c) 1994, The Regents of the University of California - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose, without fee, and without a written agreement -is hereby granted, provided that the above copyright notice and this -paragraph and the following two paragraphs appear in all copies. - -IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING -LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS -DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO -PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - */ diff --git a/env_universal.cpp b/env_universal.cpp index 987f88b0d..c7d060ad7 100644 --- a/env_universal.cpp +++ b/env_universal.cpp @@ -88,8 +88,6 @@ static int try_get_socket_once(void) wdir = path; wuname = user; - uid_t seuid; - gid_t segid; if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { @@ -137,13 +135,6 @@ static int try_get_socket_once(void) return -1; } - if ((getpeereid(s, &seuid, &segid) != 0) || seuid != geteuid()) - { - debug(1, L"Wrong credentials for socket %s at fd %d", name.c_str(), s); - close(s); - return -1; - } - if ((make_fd_nonblocking(s) != 0) || (fcntl(s, F_SETFD, FD_CLOEXEC) != 0)) { wperror(L"fcntl"); diff --git a/fallback.cpp b/fallback.cpp index 879c8e87c..7e215bbe7 100644 --- a/fallback.cpp +++ b/fallback.cpp @@ -15,9 +15,8 @@ #include #include #include -#include #include -#include +#include #include #include #include @@ -1516,80 +1515,3 @@ static int mk_wcswidth(const wchar_t *pwcs, size_t n) } #endif // HAVE_BROKEN_WCWIDTH - -#ifndef HAVE_GETPEEREID - -/*------------------------------------------------------------------------- - * - * getpeereid.c - * get peer userid for UNIX-domain socket connection - * - * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group - * - * - * IDENTIFICATION - * src/port/getpeereid.c - * - *------------------------------------------------------------------------- - */ - -#ifdef HAVE_SYS_UN_H -#include -#endif -#ifdef HAVE_UCRED_H -#include -#endif -#ifdef HAVE_SYS_UCRED_H -#include -#endif - -/* - * BSD-style getpeereid() for platforms that lack it. - */ -int getpeereid(int sock, uid_t *uid, gid_t *gid) -{ -#if defined(SO_PEERCRED) - /* Linux: use getsockopt(SO_PEERCRED) */ - struct ucred peercred; - socklen_t so_len = sizeof(peercred); - - if (getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &peercred, &so_len) != 0 || - so_len != sizeof(peercred)) - return -1; - *uid = peercred.uid; - *gid = peercred.gid; - return 0; -#elif defined(LOCAL_PEERCRED) - /* Debian with FreeBSD kernel: use getsockopt(LOCAL_PEERCRED) */ - struct xucred peercred; - socklen_t * so_len = sizeof(peercred); - - if (getsockopt(sock, 0, LOCAL_PEERCRED, &peercred, &so_len) != 0 || - so_len != sizeof(peercred) || - peercred.cr_version != XUCRED_VERSION) - return -1; - *uid = peercred.cr_uid; - *gid = peercred.cr_gid; - return 0; -#elif defined(HAVE_GETPEERUCRED) - /* Solaris: use getpeerucred() */ - ucred_t *ucred; - - ucred = NULL; /* must be initialized to NULL */ - if (getpeerucred(sock, &ucred) == -1) - return -1; - - *uid = ucred_geteuid(ucred); - *gid = ucred_getegid(ucred); - ucred_free(ucred); - - if (*uid == (uid_t) (-1) || *gid == (gid_t) (-1)) - return -1; - return 0; -#else - /* No implementation available on this platform */ - errno = ENOSYS; - return -1; -#endif -} -#endif // HAVE_GETPEEREID diff --git a/fallback.h b/fallback.h index 6898ea576..eba91be6c 100644 --- a/fallback.h +++ b/fallback.h @@ -482,7 +482,3 @@ double nan(char *tagp); #endif - -#ifndef HAVE_GETPEEREID -int getpeereid(int sock, uid_t *uid, gid_t *gid); -#endif diff --git a/fishd.cpp b/fishd.cpp index 277d99f2c..638e17622 100644 --- a/fishd.cpp +++ b/fishd.cpp @@ -868,8 +868,6 @@ int main(int argc, char ** argv) int child_socket; struct sockaddr_un remote; socklen_t t; - uid_t sock_euid; - gid_t sock_egid; int max_fd; int update_count=0; @@ -990,12 +988,7 @@ int main(int argc, char ** argv) { debug(4, L"Connected with new child on fd %d", child_socket); - if (((getpeereid(child_socket, &sock_euid, &sock_egid) != 0) || sock_euid != geteuid())) - { - debug(1, L"Wrong credentials for child on fd %d", child_socket); - close(child_socket); - } - else if (make_fd_nonblocking(child_socket) != 0) + if (make_fd_nonblocking(child_socket) != 0) { wperror(L"fcntl"); close(child_socket); diff --git a/osx/config.h b/osx/config.h index bf126b5a8..7206cb380 100644 --- a/osx/config.h +++ b/osx/config.h @@ -40,12 +40,6 @@ /* Define to 1 if you have the header file. */ #define HAVE_GETOPT_H 1 -/* Define to 1 if you have the `getpeereid' function. */ -#define HAVE_GETPEEREID 1 - -/* Define to 1 if you have the `getpeerucred' function. */ -/* #undef HAVE_GETPEERUCRED */ - /* Define to 1 if you have the `gettext' function. */ /* #undef HAVE_GETTEXT */