Back to index

glibc  2.9
Functions
setuid.c File Reference
#include <errno.h>
#include <unistd.h>
#include <setxid.h>
#include <linux/posix_types.h>
#include <kernel-features.h>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int __setuid (uid_t uid)

Function Documentation

int __setuid ( uid_t  uid)

Definition at line 35 of file setuid.c.

{
  int result;

#if __ASSUME_32BITUIDS > 0 && defined __NR_setuid32
  result = INLINE_SETXID_SYSCALL (setuid32, 1, uid);
#else
# ifdef __NR_setuid32
  if (__libc_missing_32bit_uids <= 0)
    {
      int saved_errno = errno;

      result = INLINE_SETXID_SYSCALL (setuid32, 1, uid);
      if (result == 0)
       goto out;
      if (errno != ENOSYS)
       return result;

      __set_errno (saved_errno);
      __libc_missing_32bit_uids = 1;
    }
# endif /* __NR_setuid32 */

  if (uid == (uid_t) ~0
      || uid != (uid_t) ((__kernel_uid_t) uid))
    {
      __set_errno (EINVAL);
      return -1;
    }

  result = INLINE_SETXID_SYSCALL (setuid, 1, uid);
# ifdef __NR_setuid32
 out:
# endif
#endif

  return result;
}

Here is the call graph for this function: