add sanity checks to Rom::LoadFromPointer
This commit is contained in:
@@ -108,7 +108,8 @@ absl::Status Rom::LoadAllGraphicsData() {
|
|||||||
GetGraphicsAddress(data(), i, version_constants().kOverworldGfxPtr1,
|
GetGraphicsAddress(data(), i, version_constants().kOverworldGfxPtr1,
|
||||||
version_constants().kOverworldGfxPtr2,
|
version_constants().kOverworldGfxPtr2,
|
||||||
version_constants().kOverworldGfxPtr3);
|
version_constants().kOverworldGfxPtr3);
|
||||||
ASSIGN_OR_RETURN(sheet, gfx::lc_lz2::DecompressV2(data(), offset))
|
ASSIGN_OR_RETURN(sheet,
|
||||||
|
gfx::lc_lz2::DecompressV2(rom_data_.data(), offset))
|
||||||
bpp3 = true;
|
bpp3 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,12 +233,14 @@ absl::Status Rom::LoadFromFile(const std::string& filename, bool z3_load) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
absl::Status Rom::LoadFromPointer(uchar* data, size_t length, bool z3_load) {
|
absl::Status Rom::LoadFromPointer(uchar* data, size_t length, bool z3_load) {
|
||||||
if (!data)
|
if (!data || length == 0)
|
||||||
return absl::InvalidArgumentError(
|
return absl::InvalidArgumentError(
|
||||||
"Could not load ROM: parameter `data` is empty.");
|
"Could not load ROM: parameter `data` is empty.");
|
||||||
|
|
||||||
for (int i = 0; i < length; ++i) rom_data_.push_back(data[i]);
|
if (!palette_groups_.empty()) palette_groups_.clear();
|
||||||
|
if (rom_data_.size() < length) rom_data_.resize(length);
|
||||||
|
|
||||||
|
std::copy(data, data + length, rom_data_.begin());
|
||||||
size_ = length;
|
size_ = length;
|
||||||
|
|
||||||
if (z3_load) {
|
if (z3_load) {
|
||||||
|
|||||||
Reference in New Issue
Block a user