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/librevenge-0.0.4/src/lib/librevenge_internal.h
Examining data/librevenge-0.0.4/src/lib/RVNGMemoryStream.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGTextTextGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGOLEStream.h
Examining data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGDirectoryStream.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGHTMLTextGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGProperty.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.h
Examining data/librevenge-0.0.4/src/lib/RVNGRawDrawingGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGSVGPresentationGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGStringVector.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGPropertyListVector.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGTextSpreadsheetGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGHTMLTextTextStyle.h
Examining data/librevenge-0.0.4/src/lib/RVNGHTMLTextTableStyle.h
Examining data/librevenge-0.0.4/src/lib/RVNGHTMLTextTextStyle.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGString.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGPropertyList.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGRawTextGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGMemoryStream.h
Examining data/librevenge-0.0.4/src/lib/RVNGSVGDrawingGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGBinaryData.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGTextPresentationGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGRawPresentationGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGTextDrawingGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGHTMLTextTableStyle.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGCSVSpreadsheetGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGRawSpreadsheetGenerator.cpp
Examining data/librevenge-0.0.4/src/lib/RVNGZipStream.h
Examining data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp
Examining data/librevenge-0.0.4/src/test/RVNGFileInfo.cpp
Examining data/librevenge-0.0.4/src/test/RVNGStringTest.cpp
Examining data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp
Examining data/librevenge-0.0.4/src/test/RVNGOLEStreamTest.cpp
Examining data/librevenge-0.0.4/src/test/test.cpp
Examining data/librevenge-0.0.4/src/test/RVNGStringIterTest.cpp
Examining data/librevenge-0.0.4/src/test/RVNGDirectoryStreamTest.cpp
Examining data/librevenge-0.0.4/inc/librevenge/librevenge-api.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGSVGDrawingGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGBinaryData.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGDrawingInterface.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGString.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGTextInterface.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGPresentationInterface.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGStringVector.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGProperty.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGPropertyList.h
Examining data/librevenge-0.0.4/inc/librevenge/librevenge.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGPropertyListVector.h
Examining data/librevenge-0.0.4/inc/librevenge/RVNGSpreadsheetInterface.h
Examining data/librevenge-0.0.4/inc/librevenge-stream/librevenge-stream-api.h
Examining data/librevenge-0.0.4/inc/librevenge-stream/librevenge-stream.h
Examining data/librevenge-0.0.4/inc/librevenge-stream/RVNGStreamImplementation.h
Examining data/librevenge-0.0.4/inc/librevenge-stream/RVNGDirectoryStream.h
Examining data/librevenge-0.0.4/inc/librevenge-stream/RVNGStream.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGRawTextGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGTextTextGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGHTMLTextGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGRawDrawingGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGCSVSpreadsheetGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGSVGPresentationGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGRawSpreadsheetGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGRawPresentationGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/librevenge-generators.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGTextDrawingGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/librevenge-generators-api.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGTextSpreadsheetGenerator.h
Examining data/librevenge-0.0.4/inc/librevenge-generators/RVNGTextPresentationGenerator.h

FINAL RESULTS:

data/librevenge-0.0.4/inc/librevenge/RVNGString.h:76:7:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	void sprintf(const char *format, ...) REVENGE_ATTRIBUTE_PRINTF(2, 3);
data/librevenge-0.0.4/inc/librevenge/librevenge-api.h:39:66:  [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 REVENGE_ATTRIBUTE_PRINTF(fmt, arg) __attribute__((format(printf, fmt, arg)))
data/librevenge-0.0.4/src/lib/RVNGProperty.cpp:39:14:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
		tempString.sprintf("0.0000");
data/librevenge-0.0.4/src/lib/RVNGProperty.cpp:41:14:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		tempString.sprintf("%.4f", value);
data/librevenge-0.0.4/src/lib/RVNGProperty.cpp:281:6:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	str.sprintf("%d", m_val);
data/librevenge-0.0.4/src/lib/RVNGProperty.cpp:393:6:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	str.sprintf("%i*", getInt());
data/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.cpp:53:2:  [4] (format) vprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
	vprintf(format, args);
data/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.cpp:64:2:  [4] (format) vprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
	vprintf(format, args);
data/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.cpp:77:2:  [4] (format) vprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
	vprintf(format, args);
data/librevenge-0.0.4/src/lib/RVNGSVGDrawingGenerator.cpp:772:9:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		layer.sprintf("Layer%d", m_pImpl->m_layerId++);
data/librevenge-0.0.4/src/lib/RVNGSVGDrawingGenerator.cpp:793:8:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	group.sprintf("Group%d", m_pImpl->m_groupId++);
data/librevenge-0.0.4/src/lib/RVNGSVGPresentationGenerator.cpp:575:9:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		layer.sprintf("Layer%d", m_impl->m_layerId++);
data/librevenge-0.0.4/src/lib/RVNGString.cpp:32:9:  [4] (format) vsnprintf:
  If format strings can be influenced by an attacker, they can be exploited,
  and note that sprintf variations do not always \0-terminate (CWE-134). Use
  a constant for the format specification.
#define vsnprintf _vsnprintf
data/librevenge-0.0.4/src/lib/RVNGString.cpp:179:18:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
void RVNGString::sprintf(const char *format, ...)
data/librevenge-0.0.4/src/lib/RVNGString.cpp:190:17:  [4] (format) vsnprintf:
  If format strings can be influenced by an attacker, they can be exploited,
  and note that sprintf variations do not always \0-terminate (CWE-134). Use
  a constant for the format specification.
		int outsize = vsnprintf(buf, size_t(bufsize), format, args);
data/librevenge-0.0.4/src/lib/RVNGTextTextGenerator.cpp:52:9:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
			mark.sprintf("%d", nextNote);
data/librevenge-0.0.4/src/lib/RVNGTextTextGenerator.cpp:58:8:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		mark.sprintf("%d", nextNote);
data/librevenge-0.0.4/src/lib/librevenge_internal.h:31:27:  [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 RVNG_DEBUG_MSG(M) printf M
data/librevenge-0.0.4/src/lib/RVNGCSVSpreadsheetGenerator.cpp:426: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 buf[256];
data/librevenge-0.0.4/src/lib/RVNGHTMLTextGenerator.cpp:365:9:  [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.
	static char const *wpdMetaFields[9]=
data/librevenge-0.0.4/src/lib/RVNGHTMLTextGenerator.cpp:370:9:  [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.
	static char const *metaFields[9]=
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:113:11:  [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.
	unsigned char m_magic[8];       // signature, or magic identifier
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:794:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(buffer, s_ole_magic, 8);          // ole signature
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1292:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
		memcpy(data+bytes, buf, numBytesRead);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1342:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
		memcpy(data + bytes, &tmpBuf[offset], p);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1514:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
		memcpy(&m_data[wPos], &buffer[0], wSize);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1581:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(data, &m_data[size_t(pos)], count);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1608:4:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
			memcpy(data+totalbytes, &buf[offset], count);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1630:4:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
			memcpy(data+totalbytes, &buf[offset], count);
data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp:100:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(&buffer[0], data, dataSize);
data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp:111:12:  [2] (misc) fopen:
  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).
	d->file = fopen(filename, "rb");
data/librevenge-0.0.4/src/lib/RVNGString.cpp:41:23:  [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.
static const unsigned char librvng_utf8_skip_data[256] =
data/librevenge-0.0.4/src/lib/RVNGString.cpp:184:2:  [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 firstBuffer[FIRST_BUF_SIZE];
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:62:12:  [2] (misc) fopen:
  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).
	FILE *f = fopen(TMP_FILENAME, "w");
data/librevenge-0.0.4/inc/librevenge-stream/RVNGDirectoryStream.h:78:31:  [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/librevenge-0.0.4/inc/librevenge-stream/RVNGStream.h:69:31:  [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) = 0;
data/librevenge-0.0.4/inc/librevenge-stream/RVNGStreamImplementation.h:38:23:  [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);
data/librevenge-0.0.4/inc/librevenge-stream/RVNGStreamImplementation.h:64:23:  [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);
data/librevenge-0.0.4/src/lib/RVNGDirectoryStream.cpp:202:43:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
const unsigned char *RVNGDirectoryStream::read(const unsigned long, unsigned long &numBytesRead)
data/librevenge-0.0.4/src/lib/RVNGMemoryStream.cpp:38:45:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
const unsigned char *RVNGMemoryInputStream::read(unsigned long numBytes, unsigned long &numBytesRead)
data/librevenge-0.0.4/src/lib/RVNGMemoryStream.h:57:23:  [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);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:704:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	unsigned long read(unsigned char *data, unsigned long maxlen)
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1184:38:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	const unsigned char *buf = m_input->read(512, numBytesRead);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1291:39:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		const unsigned char *buf = m_input->read(p, numBytesRead);
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1703:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				ok = leafStream.read(&buffer[0], sz) == sz;
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1802:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
unsigned long librevenge::Stream::read(unsigned char *data, unsigned long maxlen)
data/librevenge-0.0.4/src/lib/RVNGOLEStream.cpp:1804:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	return m_io ? m_io->read(data, maxlen) : 0;
data/librevenge-0.0.4/src/lib/RVNGOLEStream.h:115:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	unsigned long read(unsigned char *data, unsigned long maxlen);
data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp:147:38:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
const unsigned char *RVNGFileStream::read(unsigned long numBytes, unsigned long &numBytesRead)
data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp:363:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		tmpLength = tmpStream.read(&buf[0], tmpStream.size());
data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp:392:40:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
const unsigned char *RVNGStringStream::read(unsigned long numBytes, unsigned long &numBytesRead)
data/librevenge-0.0.4/src/lib/RVNGStreamImplementation.cpp:540:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		tmpLength = tmpStream.read(&buf[0], tmpStream.size());
data/librevenge-0.0.4/src/lib/RVNGString.cpp:234:41:  [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).
	m_stringImpl->appendEscapedXML(s, std::strlen(s));
data/librevenge-0.0.4/src/lib/RVNGString.cpp:346: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).
	const int curCharLength = m_curChar ? int(unsigned(std::strlen(m_curChar))) : 0;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:112:36:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	const unsigned char *ret = input->read(2, numBytesRead);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:121:36:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	const unsigned char *ret = input->read(4, numBytesRead);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:152:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			unsigned long read;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:153:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) end.comment_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:153:76:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) end.comment_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:154:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!data || read!=(unsigned long) end.comment_size)
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:201:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			unsigned long read;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:202:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) entry.filename_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:202:79:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) entry.filename_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:203:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!data || read!=(unsigned long) entry.filename_size)
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:210:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			unsigned long read;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:211:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) entry.extra_field_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:211:82:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) entry.extra_field_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:212:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!data || read!=(unsigned long) entry.extra_field_size)
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:219:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			unsigned long read;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:220:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) entry.file_comment_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:220:83:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) entry.file_comment_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:221:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!data || read!=(unsigned long) entry.file_comment_size)
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:259:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			unsigned long read;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:260:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) header.filename_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:260:80:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) header.filename_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:261:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!data || read!=(unsigned long) header.filename_size)
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:268:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			unsigned long read;
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:269:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) header.extra_field_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:269:83:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			const unsigned char *data=input->read((unsigned long) header.extra_field_size, read);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:270:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!data || read!=(unsigned long) header.extra_field_size)
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:317:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		    input->read((unsigned long) toCheck, numBytesRead);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:346:21:  [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).
	size_t name_size = strlen(name);
data/librevenge-0.0.4/src/lib/RVNGZipStream.cpp:434:69:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	unsigned char *compressedData = const_cast<unsigned char *>(input->read(entry.compressed_size, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:29: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/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:30: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/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:40:21:  [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 len = strlen(str);
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:47: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.
	return equal(str, str + len, reinterpret_cast<const char *>(binaryData.getDataBuffer()));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:79:77:  [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 RVNGBinaryData data(reinterpret_cast<const unsigned char *>(plain), strlen(plain));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:130:17:  [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(equal(input, input + len, data.getDataBuffer()));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:136:18:  [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(equal(input, input + len, copy.getDataBuffer()));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:141:17:  [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(equal(input, input + len, data.getDataBuffer()));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:150:17:  [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(equal(input, input + len, assign.getDataBuffer()));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:176:17:  [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(equal(input, input + len, data2.getDataBuffer()));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:225:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL == input->read(0, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:228:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL != input->read(1, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGBinaryDataTest.cpp:232:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL != input->read(50, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGDirectoryStreamTest.cpp:188:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(0 == dir.read(1, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGOLEStreamTest.cpp:74:44:  [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(static_cast<unsigned long>(end), readBytes);
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:83:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL == input->read(0, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:86:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL != input->read(1, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:90:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL != input->read(50, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:124:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL == input->read(0, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:127:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL != input->read(1, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGStreamTest.cpp:131:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CPPUNIT_ASSERT(NULL != input->read(50, numBytesRead));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:33: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/librevenge-0.0.4/src/test/RVNGStringTest.cpp:35: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/librevenge-0.0.4/src/test/RVNGStringTest.cpp:42:21:  [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 len = strlen(expected);
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:50:18:  [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(equal(expected, expected + len, str.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:59:18:  [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(equal(expected, expected + len, str.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:67:18:  [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(equal(expected, expected + len, str.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:75:18:  [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(equal(expected, expected + len, str.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:123:17:  [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(equal(input, input + len, str.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:129:17:  [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(equal(input, input + len, copy.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:136:17:  [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(equal(input, input + len, assign.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:143:17:  [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(equal(input, input + len, assign.cstr()));
data/librevenge-0.0.4/src/test/RVNGStringTest.cpp:169:17:  [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(equal(input, input + len, str2.cstr()));

ANALYSIS SUMMARY:

Hits = 116
Lines analyzed = 19144 in approximately 0.55 seconds (34566 lines/second)
Physical Source Lines of Code (SLOC) = 13109
Hits@level = [0]  18 [1]  82 [2]  16 [3]   0 [4]  18 [5]   0
Hits@level+ = [0+] 134 [1+] 116 [2+]  34 [3+]  18 [4+]  18 [5+]   0
Hits/KSLOC@level+ = [0+] 10.222 [1+] 8.84888 [2+] 2.59364 [3+] 1.3731 [4+] 1.3731 [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.