Lib.Kernel: Export empty environment (#4409)

* Export empty environment

Media Player tries to read from environ before doing some rather freaky stuff, without anything exported it will just crash from dereferencing an invalid pointer.

* Set program name

Wasn't sure what the best way would be to do this

* Just stub to eboot.bin

Accurate enough, hopefully.
This commit is contained in:
Stephen Miller 2026-05-13 22:50:45 -05:00 committed by GitHub
parent 65986d8a8a
commit 622cfffaf2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -43,6 +43,8 @@
namespace Libraries::Kernel {
static u64 g_stack_chk_guard = 0xDEADBEEF54321ABC; // dummy return
static std::vector<char*> g_environ{};
static const char* g_progname = "eboot.bin";
boost::asio::io_context io_context;
static std::mutex m_asio_req;
@ -446,6 +448,7 @@ u64 PS4_SYSV_ABI posix_sysconf(s32 name) {
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
service_thread = std::jthread{KernelServiceThread};
g_environ.emplace_back(nullptr);
Libraries::Kernel::RegisterFileSystem(sym);
Libraries::Kernel::RegisterTime(sym);
@ -460,6 +463,8 @@ void RegisterLib(Core::Loader::SymbolsResolver* sym) {
Libraries::Kernel::RegisterCoredump(sym);
LIB_OBJ("f7uOxY9mM1U", "libkernel", 1, "libkernel", &g_stack_chk_guard);
LIB_OBJ("+2thxYZ4syk", "libkernel", 1, "libkernel", &g_environ)
LIB_OBJ("djxxOmW6-aw", "libkernel", 1, "libkernel", &g_progname)
LIB_FUNCTION("D4yla3vx4tY", "libkernel", 1, "libkernel", sceKernelError);
LIB_FUNCTION("YeU23Szo3BM", "libkernel", 1, "libkernel", sceKernelGetAllowedSdkVersionOnSystem);
LIB_FUNCTION("Mv1zUObHvXI", "libkernel", 1, "libkernel", sceKernelGetSystemSwVersion);