You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
libkernel: execv/execve and the setuid/setgroups/setrlimit family are absent (XPSemu, PS5MC); fix branch ready #3558
libkernel lacks execv (KaK52lYTBIs) and execve (kdguLiAheLI), and the identity and limit setters setuid (JVmUZwK-HJU), setreuid (6w8tPp+Yk6E), setregid (ROILLZdYZPc), setgroups (M8VZ3iIlmyg) and setrlimit (4X0QwvuCfjc). From the relink registry order execv/execve are the predicted next stop of XPSemu (PPSA97358) and the setters follow for XPSemu and PS5MC (PPSA99420); not yet observed in a run.
Fix branch ready:screamm:feat/libkernel-exec-setuid (two commits on maina11c8f7f: 57f0fa37feat(libkernel): implement execv and execve as throwing exports, 1d0b2b61feat(libkernel): implement the identity and limit setters). I cannot open it as a PR because of the intake check; anyone eligible is welcome to carry it, keeping the commits as they are.
execv/execve follow the execvp precedent of fix(libkernel): export execvp #2827: FreeBSD's checks first (EFAULT for a null argv or path, ENOENT/ENOTDIR from the guest lookup, EACCES for a non-regular file), then the executable replacement not implemented throw where FreeBSD would load the image; over-long paths and oversized argument blocks throw rather than guess. XPSemu's execv sites run in a fork child and its fork returns ENOSYS, so like execvp they are not reached at start-up (ZiZc3/XPSemu 8eec07b4). Sources: FreeBSD 8c639945kern_exec.c, exec.c.
Setters follow the repository's root identity model and FreeBSD kern_prot.c/kern_resource.c: ids 0 (or -1 unchanged) succeed, any other id throws (the console's credential rules are unmeasured); setgroups takes {0} or the empty set (EINVAL above 1024, EFAULT for a null list with a count) and marks issetugid as changed as FreeBSD does; setrlimit returns EFAULT/EINVAL as FreeBSD orders them, treats negatives as infinity, lowers a soft limit above the hard one to it, and succeeds only when the result equals what getrlimit reports (RLIMIT_DATA), otherwise throws because getrlimit stores nothing. Note for XPSemu: its os_setup_limits calls getrlimit(RLIMIT_NOFILE) first, which still throws on main, so that is its real next stop there.
guest_execvp, guest_credentials, guest_getrlimit gain the new cases.
Tested on Windows 11 Pro 26220, WinLibs MinGW-w64 GCC 15.2.0 r7, Ninja, Release, BUILD_TESTING=ON, full build including libs: the three tests 3/3; ctest -j8 -E "^agc_driver_|^video_out_flip" 533/536, the failures being the known windows_exceptions (#3411), guest_kernel_sys (#3510) and guest_filesystem (#3518); with main's Process.cpp all three extended tests fail; tools/check_conventions.py --base main and git diff --check pass. Not run on Linux.
Written with Claude Code assistance (implementation by a subagent, reviewed and validated in this session).
Activity
blawesom commentedon Oct 11, 2026
Independent verification on Linux (the gap noted in the report): CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release,
BUILD_TESTING=ON.main— no rebase needed, the commit (1d0b2b619) is unchanged.tools/check_conventions.py --base origin/mainandgit diff --checkpass.The branch is also mirrored at
blawesom:verify/3558for anyone carrying.LeandroLP23 commentedon Oct 13, 2026
Every export this issue lists is on
mainnow (checked atdacd78525), so it can be closed:execv: feat(libkernel): export execv #3544execve: feat(libkernel): add execve as a throwing export #4105setuid,setreuid,setgroups: feat(libkernel): export credential setters and supplementary groups #3893setregid: feat(libkernel): implement setregid #4595setrlimit: feat(libkernel): export setrlimit #3980All of them are in
core/libs/prx/libkernel/System/src/Process.cpp.AI-assisted: yes (Claude Code)
oneandonlydean commentedon Oct 14, 2026
Closing: all seven are on main (#3544, #4105, #3893, #4595, #3980). If a title still stops on one of them, comment here.