19 #ifndef ROSTLAB_EUID_EGID
20 #define ROSTLAB_EUID_EGID 1
26 #include <sys/types.h>
50 if( getegid() != __newegid )
52 if( setregid( getegid(), __newegid ) ){ std::ostringstream s; s <<
"failed to setregid " << getegid() <<
":" << __newegid <<
" : " << strerror( errno );
throw runtime_error( s.str() ); }
55 if( geteuid() != __neweuid )
57 if( setreuid( geteuid(), __neweuid ) ){ std::ostringstream s; s <<
"failed to setreuid " << geteuid() <<
":" << __neweuid <<
" : " << strerror( errno );
throw runtime_error( s.str() ); }
66 if( setreuid( geteuid(), getuid() ) ){ std::ostringstream s; s <<
"failed revert setreuid to " << geteuid() <<
":" << getuid() <<
" : " << strerror( errno );
throw runtime_error( s.str() ); }
67 if( setreuid( _olduid, -1 ) ){ std::ostringstream s; s <<
"failed revert setreuid to " << _olduid <<
":-1" <<
" : " << strerror( errno );
throw runtime_error( s.str() ); }
71 if( setregid( getegid(), getgid() ) ){ std::ostringstream s; s <<
"failed revert setregid to " << getegid() <<
":" << getgid() <<
" : " << strerror( errno );
throw runtime_error( s.str() ); }
72 if( setregid( _oldgid, -1 ) ){ std::ostringstream s; s <<
"failed revert setregid to " << _oldgid <<
":-1" <<
" : " << strerror( errno );
throw runtime_error( s.str() ); }
79 #endif // ROSTLAB_EUID_EGID
euid_egid_resource(uid_t __neweuid, gid_t __newegid)
virtual ~euid_egid_resource()