aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/i386/setresuid.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/setresuid.c')
-rw-r--r--sysdeps/unix/sysv/linux/i386/setresuid.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/setresuid.c b/sysdeps/unix/sysv/linux/i386/setresuid.c
index 90214526ab..94fc79ba5c 100644
--- a/sysdeps/unix/sysv/linux/i386/setresuid.c
+++ b/sysdeps/unix/sysv/linux/i386/setresuid.c
@@ -44,7 +44,7 @@ extern int __libc_missing_32bit_uids;
int
__setresuid (uid_t ruid, uid_t euid, uid_t suid)
{
-# if __ASSUME_32BITUIDS > 0
+# if __ASSUME_32BITUIDS > 0
return INLINE_SYSCALL (setresuid32, 3, ruid, euid, suid);
# else
# ifdef __NR_setresuid32
@@ -62,9 +62,9 @@ __setresuid (uid_t ruid, uid_t euid, uid_t suid)
}
# endif /* __NR_setresuid32 */
- if ((ruid != (uid_t) -1 && ruid != (uid_t) (__kernel_uid_t) ruid)
- || (euid != (uid_t) -1 && euid != (uid_t) (__kernel_uid_t) euid)
- || (suid != (uid_t) -1 && suid != (uid_t) (__kernel_uid_t) suid))
+ if (((ruid + 1) > (uid_t) ((__kernel_uid_t) -1U))
+ || ((euid + 1) > (uid_t) ((__kernel_uid_t) -1U))
+ || ((suid + 1) > (uid_t) ((__kernel_uid_t) -1U)))
{
__set_errno (EINVAL);
return -1;