Skip to content

Commit 0569f8a

Browse files
authored
Organize set*id functions into their own todo module. (#117)
* Organize `set*id` functions into their own todo module. * Leave `setuid` and `setgid` outside of the todo module. They're depended on by libstd.
1 parent 69c38ed commit 0569f8a

File tree

4 files changed

+35
-30
lines changed

4 files changed

+35
-30
lines changed

c-scape/src/process/egid.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
use libc::{c_int, gid_t};
1+
use libc::gid_t;
22

33
#[no_mangle]
44
unsafe extern "C" fn getegid() -> gid_t {
55
libc!(libc::getegid());
66
rustix::process::getegid().as_raw()
77
}
8-
9-
#[no_mangle]
10-
unsafe extern "C" fn setegid(_gid: gid_t) -> c_int {
11-
libc!(libc::setegid(_gid));
12-
todo!("setegid")
13-
}

c-scape/src/process/euid.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
use libc::{c_int, uid_t};
1+
use libc::uid_t;
22

33
#[no_mangle]
44
unsafe extern "C" fn geteuid() -> uid_t {
55
libc!(libc::geteuid());
66
rustix::process::geteuid().as_raw()
77
}
8-
9-
#[no_mangle]
10-
unsafe extern "C" fn seteuid(_uid: uid_t) -> c_int {
11-
libc!(libc::seteuid(_uid));
12-
todo!("seteuid")
13-
}

c-scape/src/todo.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ mod long_double;
1111
mod long_double_complex;
1212
mod pthread_cancel;
1313
mod pthread_spin;
14+
mod set_id;
1415
mod sysv;
1516
mod wchar;
1617

@@ -838,14 +839,6 @@ unsafe extern "C" fn __isoc99_vsscanf() {
838839
todo!("__isoc99_vsscanf")
839840
}
840841
#[no_mangle]
841-
unsafe extern "C" fn setregid() {
842-
todo!("setregid")
843-
}
844-
#[no_mangle]
845-
unsafe extern "C" fn setreuid() {
846-
todo!("setreuid")
847-
}
848-
#[no_mangle]
849842
unsafe extern "C" fn times() {
850843
todo!("times")
851844
}
@@ -926,14 +919,6 @@ unsafe extern "C" fn setns() {
926919
todo!("setns")
927920
}
928921
#[no_mangle]
929-
unsafe extern "C" fn setresgid() {
930-
todo!("setresgid")
931-
}
932-
#[no_mangle]
933-
unsafe extern "C" fn setresuid() {
934-
todo!("setresuid")
935-
}
936-
#[no_mangle]
937922
unsafe extern "C" fn mq_close() {
938923
todo!("mq_close")
939924
}

c-scape/src/todo/set_id.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//! Linux's system calls for these functions only set the IDs for one thread,
2+
//! and we need to set the IDs for all threads in a process.
3+
//!
4+
//! This would typically entail taking a lock that prevents thread creation,
5+
//! setting the IDs for each thread manually by sending signals to them and
6+
//! having signal handlers that perform the set operation, waitinig for all
7+
//! the handlers to run, and then releasing the lock.
8+
9+
#[no_mangle]
10+
unsafe extern "C" fn seteuid() {
11+
todo!("seteuid")
12+
}
13+
#[no_mangle]
14+
unsafe extern "C" fn setegid() {
15+
todo!("setegid")
16+
}
17+
#[no_mangle]
18+
unsafe extern "C" fn setreuid() {
19+
todo!("setreuid")
20+
}
21+
#[no_mangle]
22+
unsafe extern "C" fn setregid() {
23+
todo!("setregid")
24+
}
25+
#[no_mangle]
26+
unsafe extern "C" fn setresuid() {
27+
todo!("setresuid")
28+
}
29+
#[no_mangle]
30+
unsafe extern "C" fn setresgid() {
31+
todo!("setresgid")
32+
}

0 commit comments

Comments
 (0)