From b9b879c3d303092bcb92cdd82958301b87a071bb Mon Sep 17 00:00:00 2001 From: Eladash Date: Sat, 28 Sep 2019 14:32:07 +0300 Subject: [PATCH] Bugfix for sceNpUtilCmpNpId Fix checking bounds, use memcmp Fix result store on sceNpUtilCmpNpIdInOrder --- rpcs3/Emu/Cell/Modules/sceNp.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/sceNp.cpp b/rpcs3/Emu/Cell/Modules/sceNp.cpp index 1e359d8e48..82ef4b9bd7 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp.cpp @@ -4220,7 +4220,7 @@ error_code sceNpUtilCanonicalizeNpIdForPsp() error_code sceNpUtilCmpNpId(vm::ptr id1, vm::ptr id2) { - sceNp.todo("sceNpUtilCmpNpId(id1=*0x%x, id2=*0x%x)", id1, id2); + sceNp.warning("sceNpUtilCmpNpId(id1=*0x%x, id2=*0x%x)", id1, id2); if (!id1 || !id2) { @@ -4228,7 +4228,7 @@ error_code sceNpUtilCmpNpId(vm::ptr id1, vm::ptr id2) } // TODO: Improve the comparison. - if (strcmp(id1->handle.data, id2->handle.data) != 0) + if (memcmp(id1->handle.data, id2->handle.data, 16) != 0) { return SCE_NP_UTIL_ERROR_NOT_MATCH; } @@ -4247,7 +4247,7 @@ error_code sceNpUtilCmpNpIdInOrder(vm::cptr id1, vm::cptr id2, // TODO: Improve the comparison. // TODO: check for nullptr - order.set(strcmp(id1->handle.data, id2->handle.data)); + *order = memcmp(id1->handle.data, id2->handle.data, 16); return CELL_OK; } @@ -4262,7 +4262,7 @@ error_code sceNpUtilCmpOnlineId(vm::cptr id1, vm::cptr id2) } // TODO: Improve the comparison. - if (strcmp(id1->handle.data, id2->handle.data) != 0) + if (memcmp(id1->handle.data, id2->handle.data, 16) != 0) { return SCE_NP_UTIL_ERROR_NOT_MATCH; }