Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler. Number of rules (primarily dangerous function names) in C/C++ ruleset: 223 Examining data/libe-book-0.1.3/inc/libe-book/EBOOKDocument.h Examining data/libe-book-0.1.3/inc/libe-book/libe-book.h Examining data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.h Examining data/libe-book-0.1.3/src/lib/PeanutPressTypes.cpp Examining data/libe-book-0.1.3/src/lib/XMLCollector.h Examining data/libe-book-0.1.3/src/lib/EBOOKCharsetConverter.h Examining data/libe-book-0.1.3/src/lib/BBeBMetadataParser.h Examining data/libe-book-0.1.3/src/lib/libebook_xml.h Examining data/libe-book-0.1.3/src/lib/HTMLHelpStream.h Examining data/libe-book-0.1.3/src/lib/PalmDocParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKSubDocument.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookText.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKHTMLParser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKXMLContext.h Examining data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKHTMLToken.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookCollector.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2TextContext.h Examining data/libe-book-0.1.3/src/lib/PDBLZ77Stream.cpp Examining data/libe-book-0.1.3/src/lib/libebook_libcss.cpp Examining data/libe-book-0.1.3/src/lib/PDBLZ77Stream.h Examining data/libe-book-0.1.3/src/lib/EBOOKBitStream.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2TextContext.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKHTMLParser.h Examining data/libe-book-0.1.3/src/lib/EPubToken.h Examining data/libe-book-0.1.3/src/lib/EBOOKXMLContext.cpp Examining data/libe-book-0.1.3/src/lib/libebook_libcss.h Examining data/libe-book-0.1.3/src/lib/libebook_xml.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKOPFToken.h Examining data/libe-book-0.1.3/src/lib/libebook_hubbub.cpp Examining data/libe-book-0.1.3/src/lib/BBeBParser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKXMLParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKLanguageManager.h Examining data/libe-book-0.1.3/src/lib/PalmDocParser.cpp Examining data/libe-book-0.1.3/src/lib/ZTXTParser.h Examining data/libe-book-0.1.3/src/lib/HTMLParser.h Examining data/libe-book-0.1.3/src/lib/XMLTreeWalker.h Examining data/libe-book-0.1.3/src/lib/RocketEBookToken.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2Collector.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook3Token.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKTokenizer.h Examining data/libe-book-0.1.3/src/lib/SoftBookCollector.h Examining data/libe-book-0.1.3/src/lib/FictionBook2MetadataCollector.h Examining data/libe-book-0.1.3/src/lib/EBOOKXMLContextBase.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKTokenizer.cpp Examining data/libe-book-0.1.3/src/lib/LITParser.h Examining data/libe-book-0.1.3/src/lib/FictionBook2BlockContext.h Examining data/libe-book-0.1.3/src/lib/EBOOKSAXParser.cpp Examining data/libe-book-0.1.3/src/lib/QiOOParser.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookHeader.h Examining data/libe-book-0.1.3/src/lib/PluckerParser.cpp Examining data/libe-book-0.1.3/src/lib/TCRParser.h Examining data/libe-book-0.1.3/src/lib/FictionBook2MetadataContext.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKBitStream.h Examining data/libe-book-0.1.3/src/lib/BBeBParser.h Examining data/libe-book-0.1.3/src/lib/HTMLHelpParser.h Examining data/libe-book-0.1.3/src/lib/TealDocParser.h Examining data/libe-book-0.1.3/src/lib/BBeBTypes.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookTypes.h Examining data/libe-book-0.1.3/src/lib/RocketEBookHeader.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2TableContext.h Examining data/libe-book-0.1.3/src/lib/FictionBook3Parser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKStreamView.cpp Examining data/libe-book-0.1.3/src/lib/OpenEBookParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKZlibStream.h Examining data/libe-book-0.1.3/src/lib/BBeBCollector.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKXMLParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2ParserContext.h Examining data/libe-book-0.1.3/src/lib/EBOOKOutputElements.cpp Examining data/libe-book-0.1.3/src/lib/ZVRParser.h Examining data/libe-book-0.1.3/src/lib/libebook_utils.h Examining data/libe-book-0.1.3/src/lib/BBeBMetadataParser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKXMLContextBase.h Examining data/libe-book-0.1.3/src/lib/SoftBookParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKOPFParser.h Examining data/libe-book-0.1.3/src/lib/PDBParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKUTF8Stream.cpp Examining data/libe-book-0.1.3/src/lib/OpenEBookParser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKStreamView.h Examining data/libe-book-0.1.3/src/lib/EBOOKSAXParser.h Examining data/libe-book-0.1.3/src/lib/LITParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook3Parser.h Examining data/libe-book-0.1.3/src/lib/ZVRParser.cpp Examining data/libe-book-0.1.3/src/lib/PeanutPressParser.h Examining data/libe-book-0.1.3/src/lib/SoftBookHeader.cpp Examining data/libe-book-0.1.3/src/lib/RocketEBookParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2ExtrasCollector.cpp Examining data/libe-book-0.1.3/src/lib/TCRParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2TableContext.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookResourceDir.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKHTMLToken.h Examining data/libe-book-0.1.3/src/lib/RocketEBookHeader.h Examining data/libe-book-0.1.3/src/lib/LITStream.h Examining data/libe-book-0.1.3/src/lib/EBOOKToken.h Examining data/libe-book-0.1.3/src/lib/BBeBCollector.h Examining data/libe-book-0.1.3/src/lib/FictionBook2MetadataCollector.cpp Examining data/libe-book-0.1.3/src/lib/RocketEBookToken.h Examining data/libe-book-0.1.3/src/lib/FictionBook3Token.h Examining data/libe-book-0.1.3/src/lib/FictionBook2XMLParserContext.h Examining data/libe-book-0.1.3/src/lib/SoftBookTypes.cpp Examining data/libe-book-0.1.3/src/lib/MobiPocketParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2ContentCollector.h Examining data/libe-book-0.1.3/src/lib/RocketEBookStream.cpp Examining data/libe-book-0.1.3/src/lib/XMLTreeNode.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2ExtrasCollector.h Examining data/libe-book-0.1.3/src/lib/libebook_utils.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKMemoryStream.h Examining data/libe-book-0.1.3/src/lib/EBOOKHTMLTypes.cpp Examining data/libe-book-0.1.3/src/lib/XMLStylesheet.cpp Examining data/libe-book-0.1.3/src/lib/PeanutPressParser.cpp Examining data/libe-book-0.1.3/src/lib/PluckerParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKUTF8Stream.h Examining data/libe-book-0.1.3/src/lib/EPubParser.h Examining data/libe-book-0.1.3/src/lib/PeanutPressTypes.h Examining data/libe-book-0.1.3/src/lib/HTMLHelpParser.cpp Examining data/libe-book-0.1.3/src/lib/XMLCollector.cpp Examining data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKMemoryStream.cpp Examining data/libe-book-0.1.3/src/lib/TealDocParser.cpp Examining data/libe-book-0.1.3/src/lib/RocketEBookParser.h Examining data/libe-book-0.1.3/src/lib/FictionBook2ParserContext.cpp Examining data/libe-book-0.1.3/src/lib/EPubToken.cpp Examining data/libe-book-0.1.3/src/lib/LITStream.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2Style.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2Parser.h Examining data/libe-book-0.1.3/src/lib/MobiPocketParser.h Examining data/libe-book-0.1.3/src/lib/ZTXTParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2Token.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2Token.h Examining data/libe-book-0.1.3/src/lib/EBOOKOPFToken.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookResourceDir.h Examining data/libe-book-0.1.3/src/lib/FictionBook2Style.h Examining data/libe-book-0.1.3/src/lib/SoftBookParser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKZlibStream.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKSubDocument.h Examining data/libe-book-0.1.3/src/lib/FictionBook2Parser.cpp Examining data/libe-book-0.1.3/src/lib/EBOOKOPFParser.cpp Examining data/libe-book-0.1.3/src/lib/EPubParser.cpp Examining data/libe-book-0.1.3/src/lib/XMLTreeNode.h Examining data/libe-book-0.1.3/src/lib/BBeBTypes.h Examining data/libe-book-0.1.3/src/lib/XMLStylesheet.h Examining data/libe-book-0.1.3/src/lib/QiOOParser.h Examining data/libe-book-0.1.3/src/lib/EBOOKDocument.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2BinaryContext.h Examining data/libe-book-0.1.3/src/lib/FictionBook2BlockContext.cpp Examining data/libe-book-0.1.3/src/lib/HTMLParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2ContentCollector.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2BinaryContext.cpp Examining data/libe-book-0.1.3/src/lib/XMLTreeWalker.cpp Examining data/libe-book-0.1.3/src/lib/SoftBookText.h Examining data/libe-book-0.1.3/src/lib/EBOOKHTMLTypes.h Examining data/libe-book-0.1.3/src/lib/libebook_hubbub.h Examining data/libe-book-0.1.3/src/lib/EBOOKOutputElements.h Examining data/libe-book-0.1.3/src/lib/EBOOKLanguageManager.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2XMLParserContext.cpp Examining data/libe-book-0.1.3/src/lib/RocketEBookStream.h Examining data/libe-book-0.1.3/src/lib/PDBParser.cpp Examining data/libe-book-0.1.3/src/lib/FictionBook2Collector.h Examining data/libe-book-0.1.3/src/lib/FictionBook2MetadataContext.h Examining data/libe-book-0.1.3/src/lib/EBOOKCharsetConverter.cpp Examining data/libe-book-0.1.3/src/test/test.cpp Examining data/libe-book-0.1.3/src/test/EBOOKMemoryStreamTest.cpp Examining data/libe-book-0.1.3/src/test/EBOOKLanguageManagerTest.cpp Examining data/libe-book-0.1.3/src/test/PDBLZ77StreamTest.cpp Examining data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp Examining data/libe-book-0.1.3/src/test/SoftBookLZSSStreamTest.cpp Examining data/libe-book-0.1.3/src/test/XMLTreeWalkerTest.cpp Examining data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp Examining data/libe-book-0.1.3/src/fuzz/lrffuzzer.cpp Examining data/libe-book-0.1.3/src/fuzz/pdbfuzzer.cpp Examining data/libe-book-0.1.3/src/conv/text/ebook2text.cpp Examining data/libe-book-0.1.3/src/conv/raw/ebook2raw.cpp Examining data/libe-book-0.1.3/src/conv/html/ebook2html.cpp FINAL RESULTS: data/libe-book-0.1.3/src/lib/BBeBCollector.cpp:63:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. str.sprintf("#%02x%02x%02x", color.r, color.g, color.b); data/libe-book-0.1.3/src/lib/FictionBook2ContentCollector.cpp:74:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. name.sprintf("FictionBook2 Heading %u", unsigned(format.headingLevel)); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:78:21: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. MSPackSystemData *system; data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:105:5: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. : system(sys) data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:110:16: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. assert(this->system); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:114:5: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. : system(sys) data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:119:16: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. assert(this->system); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:384:16: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. MSPackSystem system; data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:409:5: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. , system() data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:442:34: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. FileMap_t::const_iterator it = system.data->fileMap.find(file->filename); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:443:7: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. if (system.data->fileMap.end() == it) data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:462:35: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. mspack_system &base = m_impl->system.base; data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:476:11: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. m_impl->system.data = new MSPackSystemData(stream); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:478:73: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. mspack_system *const sys = reinterpret_cast<mspack_system *>(&m_impl->system); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:484:20: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. delete m_impl->system.data; data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:493:18: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. delete m_impl->system.data; data/libe-book-0.1.3/src/lib/libebook_utils.cpp:40:8: [4] (format) vfprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. std::vfprintf(stderr, format, args); data/libe-book-0.1.3/src/lib/libebook_utils.h:29:64: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define EBOOK_ATTRIBUTE_PRINTF(fmt, arg) __attribute__((format(printf, fmt, arg))) data/libe-book-0.1.3/src/lib/FictionBook2TableContext.cpp:213:27: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). m_columnSpan = std::atoi(value); data/libe-book-0.1.3/src/lib/FictionBook2TableContext.cpp:216:24: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). m_rowSpan = std::atoi(value); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:211:10: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. std::memcpy(buffer, data, bytes); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:286:10: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. std::memcpy(dest, src, bytes); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:480:42: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). m_impl->header = m_impl->decompressor->open(m_impl->decompressor.get(), "/"); data/libe-book-0.1.3/src/lib/PDBParser.cpp:196:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char name[32]; data/libe-book-0.1.3/src/lib/XMLCollector.cpp:134:8: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). void open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:410:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:417:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:424:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:431:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:438:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:445:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:454:5: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:460:21: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). void OutputHandler::open() data/libe-book-0.1.3/src/lib/XMLCollector.cpp:467:17: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). m_parent->open(); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:1190:10: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). assert(open); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:1193:39: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). (data->getCurrentOutput().get()->*open)(*data->currentProps); data/libe-book-0.1.3/src/lib/XMLCollector.cpp:1195:39: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). (data->getCurrentOutput().get()->*open)(RVNGPropertyList()); data/libe-book-0.1.3/src/lib/libebook_xml.cpp:33:12: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. std::memcpy(buffer, bytes, size_t(bytesRead)); data/libe-book-0.1.3/src/lib/BBeBParser.cpp:303:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *s = input->read(sizeof(signature), readBytes); data/libe-book-0.1.3/src/lib/BBeBParser.cpp:304:51: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. return (sizeof(signature) == readBytes) && std::equal(signature, signature + sizeof(signature), s); data/libe-book-0.1.3/src/lib/BBeBParser.cpp:397:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (entry.read) data/libe-book-0.1.3/src/lib/BBeBParser.cpp:1616:52: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return (m_objectIndex.end() != it) && it->second.read; data/libe-book-0.1.3/src/lib/BBeBParser.h:67:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool read; data/libe-book-0.1.3/src/lib/EBOOKBitStream.cpp:28:26: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint32_t EBOOKBitStream::read(uint8_t numberOfBits, const bool bigEndian) data/libe-book-0.1.3/src/lib/EBOOKBitStream.h:24:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint32_t read(uint8_t numberOfBits, bool bigEndian = false); data/libe-book-0.1.3/src/lib/EBOOKDocument.cpp:55:12: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. using std::equal; data/libe-book-0.1.3/src/lib/EBOOKDocument.cpp:84:7: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (equal(BOM_UTF8, BOM_UTF8 + EBOOK_NUM_ELEMENTS(BOM_UTF8) - 1, bom)) data/libe-book-0.1.3/src/lib/EBOOKDocument.cpp:86:12: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. else if (equal(BOM_UTF16BE, BOM_UTF16BE + EBOOK_NUM_ELEMENTS(BOM_UTF16BE) - 1, bom)) data/libe-book-0.1.3/src/lib/EBOOKDocument.cpp:88:12: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. else if (equal(BOM_UTF16LE, BOM_UTF16LE + EBOOK_NUM_ELEMENTS(BOM_UTF16LE) - 1, bom)) data/libe-book-0.1.3/src/lib/EBOOKDocument.cpp:122:9: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. xml = equal(decl, decl + len, data); data/libe-book-0.1.3/src/lib/EBOOKHTMLParser.cpp:283:38: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. return (lhs.size() == rhs.len) && (equal(lhs.begin(), lhs.end(), char_cast(rhs.ptr))); data/libe-book-0.1.3/src/lib/EBOOKHTMLParser.cpp:710:19: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (6 == std::strlen(c) && (string::npos == string(c).find_first_not_of("0-9a-fA-F"))) data/libe-book-0.1.3/src/lib/EBOOKHTMLToken.cpp:30:33: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getHTMLTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/EBOOKHTMLToken.cpp:30:51: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getHTMLTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/EBOOKHTMLToken.cpp:31:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getHTMLTokenId(name, strlen(name)); data/libe-book-0.1.3/src/lib/EBOOKMemoryStream.cpp:70:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *EBOOKMemoryStream::read(unsigned long numBytes, unsigned long &numBytesRead) try data/libe-book-0.1.3/src/lib/EBOOKMemoryStream.h:38:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/EBOOKOPFToken.cpp:30:32: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getOPFTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/EBOOKOPFToken.cpp:30:50: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getOPFTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/EBOOKOPFToken.cpp:31:30: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getOPFTokenId(name, strlen(name)); data/libe-book-0.1.3/src/lib/EBOOKStreamView.cpp:66:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *EBOOKStreamView::read(unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/EBOOKStreamView.cpp:80:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/EBOOKStreamView.h:42:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/EBOOKUTF8Stream.cpp:110:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *EBOOKUTF8Stream::read(unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/EBOOKUTF8Stream.cpp:112:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/EBOOKUTF8Stream.h:35:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/EBOOKZlibStream.cpp:48:61: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). auto *compressedData = const_cast<unsigned char *>(input->read(compressedSize, numBytesRead)); data/libe-book-0.1.3/src/lib/EBOOKZlibStream.cpp:149:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *EBOOKZlibStream::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/EBOOKZlibStream.cpp:151:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/EBOOKZlibStream.h:33:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/EPubToken.cpp:30:33: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getEPubTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/EPubToken.cpp:30:51: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getEPubTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/EPubToken.cpp:31:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getEPubTokenId(name, strlen(name)); data/libe-book-0.1.3/src/lib/FictionBook2Token.cpp:14:12: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). using std::strlen; data/libe-book-0.1.3/src/lib/FictionBook2Token.cpp:40:47: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getFictionBook2Token(str, (unsigned) strlen(str)); data/libe-book-0.1.3/src/lib/FictionBook2Token.cpp:69:49: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getFictionBook2TokenID(str, (unsigned) strlen(str)); data/libe-book-0.1.3/src/lib/FictionBook2Token.cpp:94:51: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getFictionBook2TokenName(str, (unsigned) strlen(str)); data/libe-book-0.1.3/src/lib/FictionBook3Token.cpp:17:12: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). using std::strlen; data/libe-book-0.1.3/src/lib/FictionBook3Token.cpp:52:25: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). const size_t length = strlen(name); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:206:59: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *const data = that->data->stream->read(bytesToRead, numRead); data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:580:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *HTMLHelpStream::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/HTMLHelpStream.cpp:582:26: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_impl->stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/HTMLHelpStream.h:39:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); data/libe-book-0.1.3/src/lib/LITStream.cpp:77:33: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *LITStream::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/LITStream.cpp:79:26: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_impl->stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/LITStream.h:39:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); data/libe-book-0.1.3/src/lib/PDBLZ77Stream.cpp:139:37: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *PDBLZ77Stream::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/PDBLZ77Stream.cpp:141:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/PDBLZ77Stream.h:37:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/PalmDocParser.cpp:114:58: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). std::vector<char> name(getName(), getName() + std::strlen(getName())); data/libe-book-0.1.3/src/lib/PalmDocParser.cpp:144:65: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (m_converter->convertBytes(getName(), (unsigned int)std::strlen(getName()), nameUtf8) && !nameUtf8.empty()) data/libe-book-0.1.3/src/lib/PeanutPressParser.cpp:68:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/PeanutPressParser.cpp:117:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *bytes = strm->read((unsigned long) end, numBytesRead); data/libe-book-0.1.3/src/lib/PeanutPressParser.cpp:159:33: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *XorStream::read(unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/PeanutPressParser.cpp:161:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/RocketEBookStream.cpp:158:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *RocketEBookStream::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/RocketEBookStream.cpp:160:26: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_impl->stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/RocketEBookStream.h:41:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); data/libe-book-0.1.3/src/lib/RocketEBookToken.cpp:30:40: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getRocketEBookTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/RocketEBookToken.cpp:30:58: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getRocketEBookTokenId(name, strlen(name), ns, strlen(ns)); data/libe-book-0.1.3/src/lib/RocketEBookToken.cpp:31:38: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return getRocketEBookTokenId(name, strlen(name)); data/libe-book-0.1.3/src/lib/SoftBookHeader.cpp:116:21: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. checkOrThrow(std::equal(signature, signature + 8, SOFTBOOK_SIGNATURE)); data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp:151:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const bool encoded = 0 == bitStream.read(1, bigEndian); data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp:154:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const uint32_t offset = bitStream.read((uint8_t) configuration.offsetBits, bigEndian); data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp:155:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const uint32_t length = bitStream.read((uint8_t) configuration.lengthBits, bigEndian) + 3; data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp:160:59: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const auto c = static_cast<unsigned char>(bitStream.read(8, bigEndian)); data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp:228:42: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *SoftBookLZSSStream::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.cpp:230:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/SoftBookLZSSStream.h:51:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/SoftBookParser.cpp:123:13: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (!std::equal(name, name + 4, type)) data/libe-book-0.1.3/src/lib/SoftBookResourceDir.cpp:45:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; data/libe-book-0.1.3/src/lib/SoftBookResourceDir.cpp:177:48: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *ResourceStream<Selector>::read(const unsigned long numBytes, unsigned long &numBytesRead) data/libe-book-0.1.3/src/lib/SoftBookResourceDir.cpp:179:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return m_stream->read(numBytes, numBytesRead); data/libe-book-0.1.3/src/lib/TCRParser.cpp:43:13: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (!std::equal(sig, sig + length, TCR_SIGNATURE)) data/libe-book-0.1.3/src/lib/TealDocParser.cpp:655:65: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (m_converter->convertBytes(getName(), (unsigned int)std::strlen(getName()), nameUtf8) && !nameUtf8.empty()) data/libe-book-0.1.3/src/lib/XMLTreeWalker.cpp:44:53: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. return (lhs.size() == lwc_string_length(rhs)) && (equal(lhs.begin(), lhs.end(), lwc_string_data(rhs))); data/libe-book-0.1.3/src/lib/ZVRParser.cpp:41:13: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (!std::equal(sig, sig + length, ZVR_SIGNATURE)) data/libe-book-0.1.3/src/lib/libebook_utils.cpp:50:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint8_t), numBytesRead); data/libe-book-0.1.3/src/lib/libebook_utils.cpp:62:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint16_t), numBytesRead); data/libe-book-0.1.3/src/lib/libebook_utils.cpp:78:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint32_t), numBytesRead); data/libe-book-0.1.3/src/lib/libebook_utils.cpp:94:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint64_t), numBytesRead); data/libe-book-0.1.3/src/lib/libebook_utils.cpp:110:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *const s = input->read(numBytes, readBytes); data/libe-book-0.1.3/src/lib/libebook_xml.cpp:28:49: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *const bytes = input->read((unsigned long) len, bytesRead); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:109:45: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x8ee3u, bitStream.read(16)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:110:45: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xe338u, bitStream.read(16)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:122:45: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xe38eu, bitStream.read(16, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:123:45: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x38e3u, bitStream.read(16, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:137:49: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xe3388ee3u, bitStream.read(32)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:149:49: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xe38e38e3u, bitStream.read(32, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:170:44: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x2e3u, bitStream.read(10)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:171:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(2)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:172:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:173:44: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x1c7u, bitStream.read(12)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:174:43: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x31u, bitStream.read(6)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:175:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:187:44: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x38eu, bitStream.read(10, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:188:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(2, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:189:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:190:44: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xc71u, bitStream.read(12, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:191:43: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x31u, bitStream.read(6, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:192:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, true)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:205:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:206:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:207:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:208:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:209:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:210:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:211:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:212:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:213:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:214:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:215:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:216:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:217:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:218:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:219:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:220:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:221:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:222:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:223:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:224:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:225:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:226:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:227:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:228:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:229:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:230:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:231:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:232:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:233:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:234:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:235:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:236:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:248:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:249:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:250:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:251:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:252:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:253:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:254:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:255:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:256:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:257:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:259:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(3u, bitStream.read(2, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:271:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xeu, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:272:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x3u, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:273:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x8u, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:274:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xeu, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:275:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x3u, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:276:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x8u, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:277:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xeu, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:278:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x3u, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:290:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xe3u, bitStream.read(8, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:291:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x8eu, bitStream.read(8, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:292:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0x38u, bitStream.read(8, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:293:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xe3u, bitStream.read(8, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:305:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(1u, bitStream.read(1, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:306:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(3u, bitStream.read(2, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:307:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0u, bitStream.read(3, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:308:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xeu, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:309:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(5, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:310:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(7u, bitStream.read(6, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:311:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(0xeu, bitStream.read(7, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:313:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). CPPUNIT_ASSERT_EQUAL(3u, bitStream.read(4, bigEndian)); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:325:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bitStream.read(23); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:327:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bitStream.read(1); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:330:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bitStream.read(1); data/libe-book-0.1.3/src/test/EBOOKBitStreamTest.cpp:333:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bitStream.read(7); data/libe-book-0.1.3/src/test/EBOOKMemoryStreamTest.cpp:59:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *s = strm.read(1, readBytes); data/libe-book-0.1.3/src/test/EBOOKMemoryStreamTest.cpp:71:33: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *s = strm.read(sizeof(data), readBytes); data/libe-book-0.1.3/src/test/EBOOKMemoryStreamTest.cpp:73:23: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. CPPUNIT_ASSERT(std::equal(data, data + sizeof(data), s)); data/libe-book-0.1.3/src/test/PDBLZ77StreamTest.cpp:57:37: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *s = stream.read(1, readBytes); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:604:6: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. bool equal(const Callback *const expected, const size_t len, const RawGenerator::CallList_t &received) data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:606:43: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. return (len == received.size()) && std::equal(received.begin(), received.end(), expected); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:652:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:669:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:695:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:719:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:742:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:771:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:799:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:828:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:844:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:858:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:893:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:914:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:935:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:957:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:994:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:1017:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:1040:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); data/libe-book-0.1.3/src/test/XMLCollectorTest.cpp:1064:28: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(expected, EBOOK_NUM_ELEMENTS(expected), generator.getCallList())); ANALYSIS SUMMARY: Hits = 232 Lines analyzed = 33512 in approximately 0.64 seconds (52640 lines/second) Physical Source Lines of Code (SLOC) = 24918 Hits@level = [0] 40 [1] 194 [2] 20 [3] 0 [4] 18 [5] 0 Hits@level+ = [0+] 272 [1+] 232 [2+] 38 [3+] 18 [4+] 18 [5+] 0 Hits/KSLOC@level+ = [0+] 10.9158 [1+] 9.31054 [2+] 1.525 [3+] 0.722369 [4+] 0.722369 [5+] 0 Dot directories skipped = 1 (--followdotdir overrides) Minimum risk level = 1 Not every hit is necessarily a security vulnerability. There may be other security vulnerabilities; review your code! See 'Secure Programming HOWTO' (https://dwheeler.com/secure-programs) for more information.