* configure.in: Check sys/id.h, getuidx and getgidx for AIX.
* process.c (getresuid): Defined for AIX. (getresgid): Ditto AIX don't have getresuid/getresgid but getuidx/getgidx. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2cf2d7ee20
commit
82d85fe441
@ -1,3 +1,11 @@
|
|||||||
|
Fri Sep 5 12:40:55 2014 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* configure.in: Check sys/id.h, getuidx and getgidx for AIX.
|
||||||
|
|
||||||
|
* process.c (getresuid): Defined for AIX.
|
||||||
|
(getresgid): Ditto
|
||||||
|
AIX don't have getresuid/getresgid but getuidx/getgidx.
|
||||||
|
|
||||||
Fri Sep 5 12:28:21 2014 Tanaka Akira <akr@fsij.org>
|
Fri Sep 5 12:28:21 2014 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* process.c (has_privilege): Fix assignements.
|
* process.c (has_privilege): Fix assignements.
|
||||||
|
@ -1143,7 +1143,8 @@ AC_CHECK_HEADERS( \
|
|||||||
malloc.h \
|
malloc.h \
|
||||||
malloc_np.h \
|
malloc_np.h \
|
||||||
malloc/malloc.h \
|
malloc/malloc.h \
|
||||||
setjmpex.h
|
setjmpex.h \
|
||||||
|
sys/id.h
|
||||||
)
|
)
|
||||||
|
|
||||||
AC_ARG_WITH([gmp],
|
AC_ARG_WITH([gmp],
|
||||||
@ -1991,6 +1992,7 @@ AC_CHECK_FUNCS(fsync)
|
|||||||
AC_CHECK_FUNCS(ftruncate)
|
AC_CHECK_FUNCS(ftruncate)
|
||||||
AC_CHECK_FUNCS(ftruncate64) # used for Win32 platform
|
AC_CHECK_FUNCS(ftruncate64) # used for Win32 platform
|
||||||
AC_CHECK_FUNCS(getcwd)
|
AC_CHECK_FUNCS(getcwd)
|
||||||
|
AC_CHECK_FUNCS(getgidx)
|
||||||
AC_CHECK_FUNCS(getgrnam_r)
|
AC_CHECK_FUNCS(getgrnam_r)
|
||||||
AC_CHECK_FUNCS(getgroups)
|
AC_CHECK_FUNCS(getgroups)
|
||||||
AC_CHECK_FUNCS(getpgid)
|
AC_CHECK_FUNCS(getpgid)
|
||||||
@ -2002,6 +2004,7 @@ AC_CHECK_FUNCS(getresuid)
|
|||||||
AC_CHECK_FUNCS(getrlimit)
|
AC_CHECK_FUNCS(getrlimit)
|
||||||
AC_CHECK_FUNCS(getsid)
|
AC_CHECK_FUNCS(getsid)
|
||||||
AC_CHECK_FUNCS(gettimeofday) # for making ac_cv_func_gettimeofday
|
AC_CHECK_FUNCS(gettimeofday) # for making ac_cv_func_gettimeofday
|
||||||
|
AC_CHECK_FUNCS(getuidx)
|
||||||
AC_CHECK_FUNCS(gmtime_r)
|
AC_CHECK_FUNCS(gmtime_r)
|
||||||
AC_CHECK_FUNCS(initgroups)
|
AC_CHECK_FUNCS(initgroups)
|
||||||
AC_CHECK_FUNCS(ioctl)
|
AC_CHECK_FUNCS(ioctl)
|
||||||
|
39
process.c
39
process.c
@ -84,6 +84,9 @@
|
|||||||
#ifdef HAVE_GRP_H
|
#ifdef HAVE_GRP_H
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_SYS_ID_H
|
||||||
|
#include <sys/id.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
# include <mach/mach_time.h>
|
# include <mach/mach_time.h>
|
||||||
@ -3277,6 +3280,42 @@ recv_child_error(int fd, int *errp, char *errmsg, size_t errmsg_buflen)
|
|||||||
return size != 0;
|
return size != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(HAVE_GETRESUID) && defined(HAVE_GETUIDX)
|
||||||
|
/* AIX 7.1 */
|
||||||
|
static int
|
||||||
|
getresuid(rb_uid_t *ruid, rb_uid_t *euid, rb_uid_t *suid)
|
||||||
|
{
|
||||||
|
rb_uid_t ret;
|
||||||
|
|
||||||
|
*ruid = getuid();
|
||||||
|
*euid = geteuid();
|
||||||
|
ret = getuidx(ID_SAVED);
|
||||||
|
if (ret == (rb_uid_t)-1)
|
||||||
|
return -1;
|
||||||
|
*suid = ret;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#define HAVE_GETRESUID
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_GETRESGID) && defined(HAVE_GETGIDX)
|
||||||
|
/* AIX 7.1 */
|
||||||
|
static int
|
||||||
|
getresgid(rb_gid_t *rgid, rb_gid_t *egid, rb_gid_t *sgid)
|
||||||
|
{
|
||||||
|
rb_gid_t ret;
|
||||||
|
|
||||||
|
*rgid = getgid();
|
||||||
|
*egid = getegid();
|
||||||
|
ret = getgidx(ID_SAVED);
|
||||||
|
if (ret == (rb_gid_t)-1)
|
||||||
|
return -1;
|
||||||
|
*sgid = ret;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#define HAVE_GETRESGID
|
||||||
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
has_privilege(void)
|
has_privilege(void)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user