- 论坛徽章:
- 0
|
asmlinkage int sys_setreuid(uid_t ruid, uid_t euid)
{
int old_ruid = current->uid;
int old_euid = current->euid;
if (ruid != (uid_t) -1) {
if ((old_ruid == ruid) ||
(current->euid==ruid) ||
suser())
current->uid = ruid;
else
return(-EPERM);
}
if (euid != (uid_t) -1) {
if ((old_ruid == euid) ||
(current->euid == euid) ||
(current->suid == euid) ||
suser())
current->euid = euid;
else {
current->uid = old_ruid;
return(-EPERM);
}
}
if (ruid != (uid_t) -1 ||
(euid != (uid_t) -1 && euid != old_ruid))
current->suid = current->euid;
current->fsuid = current->euid;
if (current->euid != old_euid)
current->dumpable = 0;
return 0;
}
不明白这些if语气的判断。求问。。。
if ((old_ruid == ruid) || (current->euid==ruid) || suser())
if ((old_ruid == euid) ||(current->euid == euid) || (current->suid == euid) || suser()) |
|