mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
Merge pull request #13811 from xdCloudy/feat/libSceCompanionHttpd-verified-zero-returns
feat(libSceCompanionHttpd): implement verified zero returns
This commit is contained in:
3 files changed
+11
-8
No files matched your search
@@ -109,17 +109,14 @@ int APS5_VABI sceCompanionHttpdGetEvent(void* event) {
|
||||
}
|
||||
|
||||
int APS5_VABI sceCompanionHttpdAddHeader(const char* key, const char* value, void* response) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceCompanionHttpdSetStatus(int status, void* response) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceCompanionHttpdSetBody(const char* body, std::uint64_t size, void* response) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,10 +90,16 @@ void CheckStates() {
|
||||
}
|
||||
|
||||
void CheckResponseBuilders() {
|
||||
unsigned char response[0x20]{};
|
||||
RequireNotImplemented([&] { sceCompanionHttpdAddHeader("key", "value", response); }, "sceCompanionHttpdAddHeader");
|
||||
RequireNotImplemented([&] { sceCompanionHttpdSetStatus(200, response); }, "sceCompanionHttpdSetStatus");
|
||||
RequireNotImplemented([&] { sceCompanionHttpdSetBody("body", 4, response); }, "sceCompanionHttpdSetBody");
|
||||
unsigned char response[0x20];
|
||||
unsigned char untouched[sizeof(response)];
|
||||
std::memset(response, 0xa5, sizeof(response));
|
||||
std::memcpy(untouched, response, sizeof(response));
|
||||
Require(sceCompanionHttpdAddHeader("key", "value", response) == 0, "sceCompanionHttpdAddHeader did not return zero");
|
||||
Require(std::memcmp(response, untouched, sizeof(response)) == 0, "sceCompanionHttpdAddHeader wrote the response");
|
||||
Require(sceCompanionHttpdSetStatus(200, response) == 0, "sceCompanionHttpdSetStatus did not return zero");
|
||||
Require(std::memcmp(response, untouched, sizeof(response)) == 0, "sceCompanionHttpdSetStatus wrote the response");
|
||||
Require(sceCompanionHttpdSetBody("body", 4, response) == 0, "sceCompanionHttpdSetBody did not return zero");
|
||||
Require(std::memcmp(response, untouched, sizeof(response)) == 0, "sceCompanionHttpdSetBody wrote the response");
|
||||
RequireNotImplemented([] { sceCompanionHttpdGet2ndScreenStatus(); }, "sceCompanionHttpdGet2ndScreenStatus");
|
||||
RequireNotImplemented([] { sceCompanionHttpdGetUserId(); }, "sceCompanionHttpdGetUserId");
|
||||
RequireNotImplemented([] { sceCompanionHttpdInitialize2(); }, "sceCompanionHttpdInitialize2");
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
### Unknown function info
|
||||
|
||||
- [sceCompanionHttpdOptParamInitialize, sceCompanionHttpdInitialize](../../../core/libs/prx/libSceCompanionHttpd/Export.cpp) (libSceCompanionHttpd) - the option block is taken as 0x60 bytes: titles fill a work memory pointer at +0x08, its size at +0x10 and a temporary data mount point at +0x58 after `sceCompanionHttpdOptParamInitialize`. Its other fields and the defaults the console writes are unknown, so `sceCompanionHttpdOptParamInitialize` zeroes the 0x60 bytes and `sceCompanionHttpdInitialize` reads none of them; both reject a null block with `INVALID_PARAM`
|
||||
- [sceCompanionHttpdAddHeader, sceCompanionHttpdSetStatus, sceCompanionHttpdSetBody](../../../core/libs/prx/libSceCompanionHttpd/Export.cpp) (libSceCompanionHttpd) - imported by PS4 titles and added without an implementation. They fill the response of a request callback, which is never called here, so every call throws
|
||||
- [sceCompanionHttpdAddHeader, sceCompanionHttpdSetStatus, sceCompanionHttpdSetBody](../../../core/libs/prx/libSceCompanionHttpd/Export.cpp) (libSceCompanionHttpd) - the PS5 13.60 exports at NIDs `8pWltDG7h6A`, `w7oz0AWHpT4` and `h3OvVxzX4qM` each consist of `xor eax, eax; ret` in `libSceCompanionHttpd.sprx` (SHA-256 `BA52B40AB6B88596E4FA4B4D5A66D8E8E38B5CD43C08D3882730D7C2C565E293`); their typed declarations agree with the [public CompanionHttpd ABI](https://github.com/shadps4-emu/shadPS4/blob/860d73b7e99559106a3ffa3d3d69f0f9237e115e/src/core/libraries/companion/companion_httpd.h#L453-L455). They return zero without reading or writing their arguments. Response construction remains unsupported
|
||||
- [sceCompanionHttpdGet2ndScreenStatus, sceCompanionHttpdGetUserId, sceCompanionHttpdInitialize2, sceCompanionHttpdRegisterRequestBodyReceptionCallback, sceCompanionHttpdRegisterRequestCallback2, sceCompanionHttpdUnregisterRequestBodyReceptionCallback](../../../core/libs/prx/libSceCompanionHttpd/Export.cpp) (libSceCompanionHttpd) - the rest of the library's exports, declared without parameters and without an implementation; their signatures are not verified, so every call throws
|
||||
|
||||
### Functional
|
||||
|
||||
Reference in new issue
Block a user