From 9ac8c63d9618de312cc82807645222e4e4ed3779 Mon Sep 17 00:00:00 2001 From: raven02 Date: Thu, 9 Jan 2014 21:30:49 +0800 Subject: [PATCH 1/2] Make more sense to use return as ERROR_PSMF_INVALID_ID --- Core/HLE/scePsmf.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/HLE/scePsmf.cpp b/Core/HLE/scePsmf.cpp index 719df3376e..ab8fb33520 100644 --- a/Core/HLE/scePsmf.cpp +++ b/Core/HLE/scePsmf.cpp @@ -766,7 +766,7 @@ u32 scePsmfGetEPWithId(u32 psmfStruct, int epid, u32 entryAddr) DEBUG_LOG(ME, "scePsmfGetEPWithId(%08x, %i, %08x)", psmfStruct, epid, entryAddr); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { // TODO: Just a guess. - return ERROR_PSMF_INVALID_TIMESTAMP; + return ERROR_PSMF_INVALID_ID; } if (Memory::IsValidAddress(entryAddr)) { Memory::WriteStruct(entryAddr, &psmf->EPMap[epid]); @@ -789,7 +789,7 @@ u32 scePsmfGetEPWithTimestamp(u32 psmfStruct, u32 ts, u32 entryAddr) int epid = psmf->FindEPWithTimestamp(ts); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { // TODO: Just a guess. - return ERROR_PSMF_INVALID_TIMESTAMP; + return ERROR_PSMF_INVALID_ID; } if (Memory::IsValidAddress(entryAddr)) { @@ -813,7 +813,7 @@ u32 scePsmfGetEPidWithTimestamp(u32 psmfStruct, u32 ts) int epid = psmf->FindEPWithTimestamp(ts); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { // TODO: Just a guess. - return ERROR_PSMF_INVALID_TIMESTAMP; + return ERROR_PSMF_INVALID_ID; } return epid; } From 451797af92e1168226c0ca3cc648656083a1538a Mon Sep 17 00:00:00 2001 From: raven02 Date: Thu, 9 Jan 2014 21:37:01 +0800 Subject: [PATCH 2/2] Add ERROR_LOG for invalid id and timestamps --- Core/HLE/scePsmf.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Core/HLE/scePsmf.cpp b/Core/HLE/scePsmf.cpp index ab8fb33520..6687a2b280 100644 --- a/Core/HLE/scePsmf.cpp +++ b/Core/HLE/scePsmf.cpp @@ -764,8 +764,9 @@ u32 scePsmfGetEPWithId(u32 psmfStruct, int epid, u32 entryAddr) return ERROR_PSMF_NOT_FOUND; } DEBUG_LOG(ME, "scePsmfGetEPWithId(%08x, %i, %08x)", psmfStruct, epid, entryAddr); + if (epid < 0 || epid >= (int)psmf->EPMap.size()) { - // TODO: Just a guess. + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid id", psmfStruct, epid); return ERROR_PSMF_INVALID_ID; } if (Memory::IsValidAddress(entryAddr)) { @@ -782,13 +783,15 @@ u32 scePsmfGetEPWithTimestamp(u32 psmfStruct, u32 ts, u32 entryAddr) return ERROR_PSMF_NOT_FOUND; } DEBUG_LOG(ME, "scePsmfGetEPWithTimestamp(%08x, %i, %08x)", psmfStruct, ts, entryAddr); + if (ts < psmf->presentationStartTime) { + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid timestamp", psmfStruct, ts); return ERROR_PSMF_INVALID_TIMESTAMP; } int epid = psmf->FindEPWithTimestamp(ts); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { - // TODO: Just a guess. + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid id", psmfStruct, epid); return ERROR_PSMF_INVALID_ID; } @@ -806,13 +809,15 @@ u32 scePsmfGetEPidWithTimestamp(u32 psmfStruct, u32 ts) return ERROR_PSMF_NOT_FOUND; } DEBUG_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i)", psmfStruct, ts); + if (ts < psmf->presentationStartTime) { + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid timestamp", psmfStruct, ts); return ERROR_PSMF_INVALID_TIMESTAMP; } int epid = psmf->FindEPWithTimestamp(ts); if (epid < 0 || epid >= (int)psmf->EPMap.size()) { - // TODO: Just a guess. + ERROR_LOG(ME, "scePsmfGetEPidWithTimestamp(%08x, %i): invalid id", psmfStruct, epid); return ERROR_PSMF_INVALID_ID; } return epid;