Changeset 2348
- Timestamp:
- 11/10/2008 22:01:38 (4 years ago)
- Location:
- box/trunk
- Files:
-
- 3 edited
-
configure.ac (modified) (2 diffs)
-
lib/common/BoxPlatform.h (modified) (1 diff)
-
lib/server/SocketStream.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
box/trunk/configure.ac
r2339 r2348 183 183 AC_CHECK_DECLS([O_BINARY],,,) 184 184 185 # Solaris provides getpeerucred() instead of getpeereid() or SO_PEERCRED 186 AC_CHECK_HEADERS([ucred.h]) 187 AC_CHECK_FUNCS([getpeerucred]) 188 185 189 AC_CHECK_DECLS([optreset],,, [[#include <getopt.h>]]) 186 190 AC_CHECK_DECLS([dirfd],,, … … 312 316 client_parcel_dir=`perl infrastructure/parcelpath.pl backup-client $target_os` 313 317 314 os_name=`uname -o` 315 if test "$os_name" = "Cygwin"; then 318 if test "$build_os" = "cygwin"; then 316 319 client_parcel_dir=`cygpath -wa $client_parcel_dir | sed -e 's|\\\|/|g'` 317 build_dir=` cygpath -wa $build_dir| sed -e 's|\\\|/|g'`320 build_dir=` cygpath -wa $build_dir | sed -e 's|\\\|/|g'` 318 321 fi 319 322 -
box/trunk/lib/common/BoxPlatform.h
r2257 r2348 73 73 74 74 // Find out if credentials on UNIX sockets can be obtained 75 #ifndef HAVE_GETPEEREID 76 #if !HAVE_DECL_SO_PEERCRED 77 #define PLATFORM_CANNOT_FIND_PEER_UID_OF_UNIX_SOCKET 78 #endif 75 #ifdef HAVE_GETPEEREID 76 // 77 #elif HAVE_DECL_SO_PEERCRED 78 // 79 #elif HAVE_UCRED_H && HAVE_GETPEERUCRED 80 // 81 #else 82 #define PLATFORM_CANNOT_FIND_PEER_UID_OF_UNIX_SOCKET 79 83 #endif 80 84 -
box/trunk/lib/server/SocketStream.cpp
r2253 r2348 19 19 20 20 #ifndef WIN32 21 #include <poll.h> 21 #include <poll.h> 22 #endif 23 24 #ifdef HAVE_UCRED_H 25 #include <ucred.h> 22 26 #endif 23 27 … … 479 483 #endif 480 484 485 #if HAVE_UCRED_H && HAVE_GETPEERUCRED 486 ucred_t *pucred = NULL; 487 if(::getpeerucred(mSocketHandle, &pucred) == 0) 488 { 489 rUidOut = ucred_geteuid(pucred); 490 rGidOut = ucred_getegid(pucred); 491 ucred_free(pucred); 492 if (rUidOut == -1 || rGidOut == -1) 493 { 494 BOX_ERROR("Failed to get peer credentials on " 495 "socket: insufficient information"); 496 return false; 497 } 498 return true; 499 } 500 501 BOX_LOG_SYS_ERROR("Failed to get peer credentials on socket"); 502 #endif 503 481 504 // Not available 482 505 return false; 483 506 } 484 507 485 486 487
Note: See TracChangeset
for help on using the changeset viewer.
