]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/unix/sysv/linux/seteuid.c
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / unix / sysv / linux / seteuid.c
index a1832d64bc077b666ee10f04be6faa671ee5e528..9d13766fd910c990cd3e498093ebbe646d7db3c3 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
-#include <sys/syscall.h>
-#include <sys/types.h>
 #include <unistd.h>
+#include <setxid.h>
 
-#include <sysdep.h>
-#include "kernel-features.h"
-
-#if defined __NR_setresuid || __ASSUME_SETRESUID_SYSCALL > 0
-
-extern int __setresuid (uid_t ruid, uid_t euid, uid_t suid);
 
 int
 seteuid (uid_t uid)
@@ -39,23 +31,14 @@ seteuid (uid_t uid)
       return -1;
     }
 
-# if __ASSUME_32BITUIDS > 0 && defined __NR_setresuid32
-  return INLINE_SYSCALL (setresuid32, 3, -1, uid, -1);
-# else
-  /* First try the syscall.  */
-  result = __setresuid (-1, uid, -1);
-# if __ASSUME_SETRESUID_SYSCALL == 0
-  if (result == -1 && errno == ENOSYS)
-    /* No system call available.  Use emulation.  This may not work
-       since `setreuid' also sets the saved user ID when UID is not
-       equal to the real user ID, making it impossible to switch back.  */
-    result = __setreuid (-1, uid);
-# endif
+#ifdef __NR_setresuid32
+  result = INLINE_SETXID_SYSCALL (setresuid32, 3, -1, uid, -1);
+#else
+  result = INLINE_SETXID_SYSCALL (setresuid, 3, -1, uid, -1);
+#endif
 
   return result;
-# endif
 }
+#ifndef seteuid
 libc_hidden_def (seteuid)
-#else
-# include <sysdeps/unix/bsd/seteuid.c>
 #endif