From 81bd034a9eeebd34908cfbb74d15874f39ee1f19 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sat, 20 May 2023 19:21:32 +0200 Subject: [PATCH] Guard an undefined behaviour `std::vector.back()` on an empty `std::vector` is undefined. This should fix #6725. Thanks to @Capostrophic for the investigation. --- components/esm4/loadtes4.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/esm4/loadtes4.cpp b/components/esm4/loadtes4.cpp index 86334910ae..27d55a9dde 100644 --- a/components/esm4/loadtes4.cpp +++ b/components/esm4/loadtes4.cpp @@ -78,6 +78,9 @@ void ESM4::Header::load(ESM4::Reader& reader) } case ESM4::SUB_DATA: { + if (mMaster.empty()) + throw std::runtime_error( + "Failed to read TES4 DATA subrecord: there is no preceding MAST subrecord"); // WARNING: assumes DATA always follows MAST if (!reader.getExact(mMaster.back().size)) throw std::runtime_error("TES4 DATA data read error");