From 7f5d290b660259da2d2b4affbd2d2107bd9d49ff Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 17 Jan 2025 17:01:09 -0500 Subject: [PATCH] Promote validation. --- Storage/Tape/Formats/TZX.cpp | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/Storage/Tape/Formats/TZX.cpp b/Storage/Tape/Formats/TZX.cpp index e130e3ade..c5907c4fc 100644 --- a/Storage/Tape/Formats/TZX.cpp +++ b/Storage/Tape/Formats/TZX.cpp @@ -22,28 +22,25 @@ Log::Logger logger; } TZX::TZX(const std::string &file_name) : file_name_(file_name) { - format_serialiser(); + Storage::FileHolder file(file_name, FileHolder::FileMode::Read); + + // Check for signature followed by a 0x1a + if(!file.check_signature("ZXTape!")) throw ErrorNotTZX; + if(file.get8() != 0x1a) throw ErrorNotTZX; + + // Get version number + const uint8_t major_version = file.get8(); + const uint8_t minor_version = file.get8(); + + // Reject if an incompatible version + if(major_version != 1 || minor_version > 21) throw ErrorNotTZX; } std::unique_ptr TZX::format_serialiser() const { return std::make_unique(file_name_); } -TZX::Serialiser::Serialiser(const std::string &file_name) : - file_(file_name, FileHolder::FileMode::Read), - current_level_(false) { - - // Check for signature followed by a 0x1a - if(!file_.check_signature("ZXTape!")) throw ErrorNotTZX; - if(file_.get8() != 0x1a) throw ErrorNotTZX; - - // Get version number - const uint8_t major_version = file_.get8(); - const uint8_t minor_version = file_.get8(); - - // Reject if an incompatible version - if(major_version != 1 || minor_version > 21) throw ErrorNotTZX; - +TZX::Serialiser::Serialiser(const std::string &file_name) : file_(file_name, FileHolder::FileMode::Read) { reset(); }