From b652f62d19c66b3f643ce7a85aa2fbe018651a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Wed, 26 Aug 2020 22:17:42 +0200 Subject: [PATCH] SavedataParam: Be careful with const char* to string. Might help #13187 --- Core/Dialog/SavedataParam.cpp | 6 +++++- Core/ELF/ParamSFO.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Core/Dialog/SavedataParam.cpp b/Core/Dialog/SavedataParam.cpp index d14f3395e3..37776d489e 100644 --- a/Core/Dialog/SavedataParam.cpp +++ b/Core/Dialog/SavedataParam.cpp @@ -263,7 +263,11 @@ std::string SavedataParam::GetSaveFilePath(const SceUtilitySavedataParam *param, inline static std::string FixedToString(const char *str, size_t n) { - return std::string(str, strnlen(str, n)); + if (!str) { + return std::string(""); + } else { + return std::string(str, strnlen(str, n)); + } } std::string SavedataParam::GetGameName(const SceUtilitySavedataParam *param) const diff --git a/Core/ELF/ParamSFO.cpp b/Core/ELF/ParamSFO.cpp index 6c164db355..b12b508942 100644 --- a/Core/ELF/ParamSFO.cpp +++ b/Core/ELF/ParamSFO.cpp @@ -155,7 +155,7 @@ int ParamSFOData::GetDataOffset(const u8 *paramsfo, std::string dataName) { for (u32 i = 0; i < header->index_table_entries; i++) { const char *key = (const char *)(key_start + indexTables[i].key_table_offset); - if(std::string(key) == dataName) + if (!strcmp(key, dataName.c_str())) { return data_start + indexTables[i].data_table_offset; }