From ba89552373341be2edecb7e6cb8f8ebec1417e24 Mon Sep 17 00:00:00 2001 From: Marius Alexandersen Date: Sat, 31 Aug 2024 23:33:47 +0200 Subject: [PATCH] Fix segfault when unable to find PFSCOffset in pfs_image --- src/core/file_format/pkg.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/file_format/pkg.cpp b/src/core/file_format/pkg.cpp index d86f3b28d..13e5e88b1 100644 --- a/src/core/file_format/pkg.cpp +++ b/src/core/file_format/pkg.cpp @@ -258,6 +258,12 @@ bool PKG::Extract(const std::filesystem::path& filepath, const std::filesystem:: // Retrieve PFSC from decrypted pfs_image. pfsc_offset = GetPFSCOffset(pfs_decrypted); + if (pfsc_offset == (u32)-1) + { + failreason = "Could not retrieve PFSC from decrypted pfs_image"; + return false; + } + std::memcpy(pfsc.data(), pfs_decrypted.data() + pfsc_offset, length - pfsc_offset); PFSCHdr pfsChdr;