Merge pull request #4053 from nikowolf123/fix/libkernel-close-guest-sockets

fix(libkernel): close guest sockets in sceKernelClose
This commit is contained in:
Dean 2026-10-13 01:20:47 +13:00 committed by GitHub
commit ed14cb4e0a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 1 deletions

View File

@ -212,6 +212,7 @@ int OpenInDirectory_nid_no_patch(int directory, const char* path, int flags, std
}
int APS5_VABI sceKernelClose(int d) {
if (d >= GuestSockets::FirstDescriptor) return GuestSockets::Close(d) == 0 ? 0 : SceKernelError(*__error_nid_postfix());
File::ForgetRandomDevice(d);
File::ForgetDescriptor(d);
#ifdef _WIN32

View File

@ -30,6 +30,7 @@ int APS5_VABI accept_nid_postfix(int, void*, std::uint32_t*);
int APS5_VABI fcntl_nid_postfix(int, int, ...);
int APS5_VABI poll_nid_postfix(PollDescriptor*, std::uint32_t, int);
int APS5_VABI close_nid_postfix(int);
int APS5_VABI sceKernelClose(int);
std::int64_t APS5_VABI read_nid_postfix(int, void*, std::uint64_t);
std::int64_t APS5_VABI write_nid_postfix(int, const char*, std::int64_t);
std::int64_t APS5_VABI _read_nid_postfix(int, void*, std::size_t);
@ -167,6 +168,8 @@ int main() {
Require(pwrite_nid_disambig1_nid_postfix(server, request, 1, 0) == -1 && *__error_nid_postfix() == 9);
Require(preadv_nid_postfix(server, positionedIov, 1, 0) == -1 && *__error_nid_postfix() == 9);
Require(pwritev_nid_postfix(server, positionedIov, 1, 0) == -1 && *__error_nid_postfix() == 9);
Require(close_nid_postfix(listener) == 0);
Require(sceKernelClose(listener) == 0);
Require(sceKernelClose(listener) == KernelBadDescriptor);
Require(close_nid_postfix(listener) == -1 && *__error_nid_postfix() == 9);
return 0;
}