int samba_setuidx(int flags, uid_t uid);
int samba_setgidx(int flags, gid_t gid);
int samba_setgroups(size_t setlen, const gid_t *gidset);
+#endif
+
+#include "../lib/util/setid.h"
+#else
+
+/* Inside autoconf test. */
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
#endif
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <errno.h>
+
+#ifdef HAVE_SYS_PRIV_H
+#include <sys/priv.h>
+#endif
+#ifdef HAVE_SYS_ID_H
+#include <sys/id.h>
#endif
-#include "../lib/util/setid.h"
+/* autoconf tests don't include setid.h */
+int samba_setresuid(uid_t ruid, uid_t euid, uid_t suid);
+int samba_setresgid(gid_t rgid, gid_t egid, gid_t sgid);
+int samba_setreuid(uid_t ruid, uid_t euid);
+int samba_setregid(gid_t rgid, gid_t egid);
+int samba_seteuid(uid_t euid);
+int samba_setegid(gid_t egid);
+int samba_setuid(uid_t uid);
+int samba_setgid(gid_t gid);
+int samba_setuidx(int flags, uid_t uid);
+int samba_setgidx(int flags, gid_t gid);
+int samba_setgroups(size_t setlen, const gid_t *gidset);
+
+#endif
#if defined(USE_LINUX_THREAD_CREDENTIALS)
#if defined(HAVE_SYSCALL_H)
AC_TRY_RUN([
#define AUTOCONF_TEST 1
#define USE_LINUX_THREAD_CREDENTIALS 1
-#include "confdefs.h"
+#include "${srcdir-.}/../lib/util/setid.c"
#include "${srcdir-.}/lib/util_sec.c"],
samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
#define AUTOCONF_TEST 1
#define USE_SETREUID 1
#include "confdefs.h"
+#include "${srcdir-.}/../lib/util/setid.c"
#include "${srcdir-.}/lib/util_sec.c"],
samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
if test x"$samba_cv_USE_SETREUID" = x"yes"; then
#define AUTOCONF_TEST 1
#define USE_SETRESUID 1
#include "confdefs.h"
+#include "${srcdir-.}/../lib/util/setid.c"
#include "${srcdir-.}/lib/util_sec.c"],
samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
#define AUTOCONF_TEST 1
#define USE_SETEUID 1
#include "confdefs.h"
+#include "${srcdir-.}/../lib/util/setid.c"
#include "${srcdir-.}/lib/util_sec.c"],
samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
if test x"$samba_cv_USE_SETEUID" = x"yes"; then
#define AUTOCONF_TEST 1
#define USE_SETUIDX 1
#include "confdefs.h"
+#include "${srcdir-.}/../lib/util/setid.c"
#include "${srcdir-.}/lib/util_sec.c"],
samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
#include <sys/id.h>
#endif
-/* In autoconf/test mode include the definitions of samba_setXXX. */
-#include "../lib/util/setid.c"
-
#define DEBUG(x, y) printf y
#define smb_panic(x) exit(1)
#define bool int
seteuid = conf.CHECK_CODE('''
#define AUTOCONF_TEST 1
#define USE_LINUX_THREAD_CREDENTIALS 1
+ #include "../lib/util/setid.c"
#include "./lib/util_sec.c"
''',
'USE_LINUX_THREAD_CREDENTIALS',
seteuid = conf.CHECK_CODE('''
#define AUTOCONF_TEST 1
#define USE_SETREUID 1
+ #include "../lib/util/setid.c"
#include "./lib/util_sec.c"
''',
'USE_SETREUID',
seteuid = conf.CHECK_CODE('''
#define AUTOCONF_TEST 1
#define USE_SETRESUID 1
+ #include "../lib/util/setid.c"
#include "./lib/util_sec.c"
''',
'USE_SETRESUID',
seteuid = conf.CHECK_CODE('''
#define AUTOCONF_TEST 1
#define USE_SETEUID 1
+ #include "../lib/util/setid.c"
#include "./lib/util_sec.c"
''',
'USE_SETEUID',
seteuid = conf.CHECK_CODE('''
#define AUTOCONF_TEST 1
#define USE_SETUIDX 1
+ #include "../lib/util/setid.c"
#include "./lib/util_sec.c"
''',
'USE_SETUIDX',