diff --git a/heiFIP/assets/heiFIPPacketImage.cpp b/heiFIP/assets/heiFIPPacketImage.cpp index d0059fa..28f579e 100644 --- a/heiFIP/assets/heiFIPPacketImage.cpp +++ b/heiFIP/assets/heiFIPPacketImage.cpp @@ -222,8 +222,8 @@ class heiFIPPacketImage { } } - // 3) If auto_dim is requested, compute dim = ceil(sqrt(length)) - if (auto_dim) { + // 3) If auto_dim is requested or dim is invalid, compute dim = ceil(sqrt(length)) + if (auto_dim || dim <= 0) { dim = static_cast(std::ceil(std::sqrt(static_cast(length)))); } diff --git a/heiFIP/extractor.cpp b/heiFIP/extractor.cpp index c493144..00003c0 100644 --- a/heiFIP/extractor.cpp +++ b/heiFIP/extractor.cpp @@ -168,6 +168,11 @@ class FIPExtractor { size_t maxImageDim, bool removeDuplicates) { + if (image.get_matrix().empty() || image.get_matrix()[0].empty()) { + std::cout << "[!] Image not created: empty matrix.\n"; + return false; + } + size_t height = image.get_matrix().size(); size_t width = image.get_matrix()[0].size(); diff --git a/heiFIP/layers/init.cpp b/heiFIP/layers/init.cpp index 6894062..1f80a4a 100644 --- a/heiFIP/layers/init.cpp +++ b/heiFIP/layers/init.cpp @@ -90,7 +90,7 @@ class PacketProcessor { std::unique_ptr rawPacketPt; size_t count = 0; - while (count < maxCount && reader.getNextPacket(rawPacket)) { + while ((maxCount == 0 || count < maxCount) && reader.getNextPacket(rawPacket)) { rawPacketPt = std::make_unique(rawPacket); std::unique_ptr fippkt = preprocess(rawPacketPt, type);