diff --git a/src/asfvideo.cpp b/src/asfvideo.cpp index 9151b50d..df553524 100644 --- a/src/asfvideo.cpp +++ b/src/asfvideo.cpp @@ -217,7 +217,7 @@ void AsfVideo::readMetadata() { } // AsfVideo::readMetadata AsfVideo::HeaderReader::HeaderReader(BasicIo::UniquePtr& io) : IdBuf_(GUID) { - if (io->size() >= io->tell() + QWORD + QWORD) { + if (io->size() >= io->tell() + GUID + QWORD) { IdBuf_ = io->read(GUID); size_ = readQWORDTag(io); diff --git a/src/helper_functions.cpp b/src/helper_functions.cpp index e33031b1..267b4b30 100644 --- a/src/helper_functions.cpp +++ b/src/helper_functions.cpp @@ -55,13 +55,13 @@ uint16_t readWORDTag(BasicIo::UniquePtr& io) { return FieldBuf.read_uint16(0, littleEndian); } -std::string readStringWcharTag(BasicIo::UniquePtr& io, uint16_t length) { +std::string readStringWcharTag(BasicIo::UniquePtr& io, size_t length) { Internal::enforce(length <= io->size() - io->tell(), Exiv2::ErrorCode::kerCorruptedMetadata); DataBuf FieldBuf = io->read(length); return toString16(FieldBuf); } -std::string readStringTag(BasicIo::UniquePtr& io, uint16_t length) { +std::string readStringTag(BasicIo::UniquePtr& io, size_t length) { Internal::enforce(length <= io->size() - io->tell(), Exiv2::ErrorCode::kerCorruptedMetadata); DataBuf FieldBuf = io->read(length); return Exiv2::toString(FieldBuf.data()); diff --git a/src/helper_functions.hpp b/src/helper_functions.hpp index 5eb83054..f323977b 100644 --- a/src/helper_functions.hpp +++ b/src/helper_functions.hpp @@ -54,9 +54,9 @@ std::string toString16(Exiv2::DataBuf& buf); [[nodiscard]] uint16_t readWORDTag(Exiv2::BasicIo::UniquePtr& io); -[[nodiscard]] std::string readStringWcharTag(Exiv2::BasicIo::UniquePtr& io, uint16_t length); +[[nodiscard]] std::string readStringWcharTag(Exiv2::BasicIo::UniquePtr& io, size_t length); -[[nodiscard]] std::string readStringTag(Exiv2::BasicIo::UniquePtr& io, uint16_t length = DWORD); +[[nodiscard]] std::string readStringTag(Exiv2::BasicIo::UniquePtr& io, size_t length = DWORD); } // namespace Exiv2 #endif // HELPER_FUNCTIONS_HPP diff --git a/src/riffvideo.cpp b/src/riffvideo.cpp index 4c525dfc..89683319 100644 --- a/src/riffvideo.cpp +++ b/src/riffvideo.cpp @@ -390,9 +390,7 @@ void RiffVideo::readMetadata() { RiffVideo::HeaderReader::HeaderReader(BasicIo::UniquePtr& io) { if (io->size() >= io->tell() + DWORD + DWORD) { - DataBuf IdBuf_ = io->read(DWORD); - id_ = Exiv2::toString(IdBuf_.data()); - + id_ = readStringTag(io); size_ = readDWORDTag(io); } } @@ -719,7 +717,7 @@ void RiffVideo::readIndexChunk(uint64_t size_) { void RiffVideo::readDataChunk(uint64_t size_) { #ifdef EXIV2_DEBUG_MESSAGES - EXV_DEBUG << "--> Data = " << readStringTag(size_) << std::endl; + EXV_DEBUG << "--> Data = " << readStringTag(static_size(size_)) << std::endl; if (size_ % 2 != 0) { EXV_DEBUG << "--> pad byte = " << readStringTag(1) << std::endl; }