Add setresuid/setresgid (suid/sgid stub on Redox).
This commit is contained in:
@@ -657,7 +657,7 @@ pub unsafe extern "C" fn rmdir(path: *const c_char) -> c_int {
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn setgid(gid: gid_t) -> c_int {
|
||||
Sys::setregid(gid, gid)
|
||||
Sys::setresgid(gid, gid, -1)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
@@ -677,12 +677,16 @@ pub extern "C" fn setpgrp() -> pid_t {
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn setregid(rgid: gid_t, egid: gid_t) -> c_int {
|
||||
Sys::setregid(rgid, egid)
|
||||
Sys::setresgid(rgid, egid, -1)
|
||||
}
|
||||
#[no_mangle]
|
||||
pub extern "C" fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) -> c_int {
|
||||
Sys::setresgid(rgid, egid, sgid)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn setreuid(ruid: uid_t, euid: uid_t) -> c_int {
|
||||
Sys::setreuid(ruid, euid)
|
||||
Sys::setresuid(ruid, euid, -1)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
@@ -692,7 +696,11 @@ pub extern "C" fn setsid() -> pid_t {
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn setuid(uid: uid_t) -> c_int {
|
||||
Sys::setreuid(uid, uid)
|
||||
Sys::setresuid(uid, uid, -1)
|
||||
}
|
||||
#[no_mangle]
|
||||
pub extern "C" fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) -> c_int {
|
||||
Sys::setresuid(ruid, euid, suid)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
|
||||
@@ -568,12 +568,12 @@ impl Pal for Sys {
|
||||
e(unsafe { syscall!(SETPRIORITY, which, who, prio) }) as c_int
|
||||
}
|
||||
|
||||
fn setregid(rgid: gid_t, egid: gid_t) -> c_int {
|
||||
e(unsafe { syscall!(SETREGID, rgid, egid) }) as c_int
|
||||
fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) -> c_int {
|
||||
e(unsafe { syscall!(SETRESGID, rgid, egid, sgid) }) as c_int
|
||||
}
|
||||
|
||||
fn setreuid(ruid: uid_t, euid: uid_t) -> c_int {
|
||||
e(unsafe { syscall!(SETREUID, ruid, euid) }) as c_int
|
||||
fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) -> c_int {
|
||||
e(unsafe { syscall!(SETRESUID, ruid, euid, suid) }) as c_int
|
||||
}
|
||||
|
||||
fn setsid() -> c_int {
|
||||
|
||||
@@ -207,9 +207,9 @@ pub trait Pal {
|
||||
|
||||
fn setpriority(which: c_int, who: id_t, prio: c_int) -> c_int;
|
||||
|
||||
fn setregid(rgid: gid_t, egid: gid_t) -> c_int;
|
||||
fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) -> c_int;
|
||||
|
||||
fn setreuid(ruid: uid_t, euid: uid_t) -> c_int;
|
||||
fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) -> c_int;
|
||||
|
||||
fn setsid() -> c_int;
|
||||
|
||||
|
||||
@@ -930,11 +930,17 @@ impl Pal for Sys {
|
||||
}
|
||||
}
|
||||
|
||||
fn setregid(rgid: gid_t, egid: gid_t) -> c_int {
|
||||
fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) -> c_int {
|
||||
if sgid != -1 {
|
||||
println!("TODO: suid");
|
||||
}
|
||||
e(syscall::setregid(rgid as usize, egid as usize)) as c_int
|
||||
}
|
||||
|
||||
fn setreuid(ruid: uid_t, euid: uid_t) -> c_int {
|
||||
fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) -> c_int {
|
||||
if suid != -1 {
|
||||
println!("TODO: suid");
|
||||
}
|
||||
e(syscall::setreuid(ruid as usize, euid as usize)) as c_int
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user