From 4ed2c7b5949e055546d63e58f8cae7a9cc10be01 Mon Sep 17 00:00:00 2001 From: Eladash Date: Tue, 15 Oct 2019 17:04:22 +0300 Subject: [PATCH] error checking bugfix for sceNpTrophyCreateContext options = 1 is allowed. --- rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp | 8 ++++---- rpcs3/Emu/Cell/Modules/sceNpTrophy.h | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp b/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp index 45c78cafad..5495739697 100644 --- a/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp @@ -232,12 +232,12 @@ error_code sceNpTrophyCreateContext(vm::ptr context, vm::cptr 0) + if (options > SCE_NP_TROPHY_OPTIONS_CREATE_CONTEXT_READ_ONLY) { return SCE_NP_TROPHY_ERROR_NOT_SUPPORTED; } @@ -253,8 +253,8 @@ error_code sceNpTrophyCreateContext(vm::ptr context, vm::cptrterm, commId->data, commId->num); if (commId->term) { - char trimchar[10] = { 0 }; - memcpy(trimchar, commId->data, sizeof(trimchar) - 1); + char trimchar[10]; + strcpy_trunc(trimchar, commId->data); deleteTerminateChar(trimchar, commId->term); name = fmt::format("%s_%02d", trimchar, commId->num); } diff --git a/rpcs3/Emu/Cell/Modules/sceNpTrophy.h b/rpcs3/Emu/Cell/Modules/sceNpTrophy.h index 0cb928a689..7ffefac8a2 100644 --- a/rpcs3/Emu/Cell/Modules/sceNpTrophy.h +++ b/rpcs3/Emu/Cell/Modules/sceNpTrophy.h @@ -76,6 +76,11 @@ enum SceNpTrophyGrade SCE_NP_TROPHY_GRADE_BRONZE = 4, }; +enum +{ + SCE_NP_TROPHY_OPTIONS_CREATE_CONTEXT_READ_ONLY = 1, +}; + struct SceNpTrophyGameDetails { be_t numTrophies;