aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/loader/ncch.cpp
diff options
context:
space:
mode:
authorGravatar bunnei <bunneidev@gmail.com>2014-07-04 20:32:06 -0400
committerGravatar bunnei <bunneidev@gmail.com>2014-07-04 20:37:51 -0400
commitb70c4fb48ec32057e56d9c0373794670bddd4f34 (patch)
tree6bb6ab148504beaacdfa02ed1dd069e3a5f61427 /src/core/loader/ncch.cpp
parent542700ccb7e629db21dff3193938e9ada97876c2 (diff)
NCCH: Updated ExeFS memory allocation to be safer.
Diffstat (limited to 'src/core/loader/ncch.cpp')
-rw-r--r--src/core/loader/ncch.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp
index a8233890..ba27eb75 100644
--- a/src/core/loader/ncch.cpp
+++ b/src/core/loader/ncch.cpp
@@ -157,7 +157,12 @@ ResultStatus AppLoader_NCCH::LoadSectionExeFS(const char* name, std::vector<u8>&
// Section is compressed...
if (i == 0 && is_compressed) {
// Read compressed .code section...
- std::unique_ptr<u8[]> temp_buffer(new u8[exefs_header.section[i].size]);
+ std::unique_ptr<u8[]> temp_buffer;
+ try {
+ temp_buffer.reset(new u8[exefs_header.section[i].size]);
+ } catch (std::bad_alloc&) {
+ return ResultStatus::ErrorMemoryAllocationFailed;
+ }
file.ReadBytes(&temp_buffer[0], exefs_header.section[i].size);
// Decompress .code section...