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/libfilezilla-0.25.0/lib/libfilezilla/glue/wx.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/glue/wxinvoker.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/glue/unix.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/private/defs.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/private/visibility.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/private/windows.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/apply.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/buffer.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/encode.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/encryption.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/event.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/event_handler.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/event_loop.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/file.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/format.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/hash.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/invoker.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/iputils.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/libfilezilla.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/local_filesys.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/logger.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/mutex.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/optional.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/process.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/rate_limiter.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/rate_limited_layer.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/recursive_remove.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/rwmutex.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/shared.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/signature.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/socket.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/string.hpp
Parsing failed to find end of parameter list; semicolon terminated it in (a.cbegin(), a.cend(), b.cbegin(), b.cend(),
	    [](auto const& a, auto const& b) {
		    return tolower_ascii(a) == tolower_ascii(b);
	    }
	);
}
inline bool equal_insensitive_ascii(std::wstring_vi
Parsing failed to find end of parameter list; semicolon terminated it in (a.cbegin(), a.cend(), b.cbegin(), b.cend(),
	    [](auto const& a, auto const& b) {
		    return tolower_ascii(a) == tolower_ascii(b);
	    }
	);
}

/** \brief Converts from std::string in system enc
Parsing failed to find end of parameter list; semicolon terminated it in (beginning.begin(), beginning.end(), s.begin(), [](typename String::value_type const& a, typename String::value_type const& b) {
			return tolower_ascii(a) == tolower_ascii(b);
		});
	}
	else {
		retu
Parsing failed to find end of parameter list; semicolon terminated it in (ending.rbegin(), ending.rend(), s.rbegin(), [](typename String::value_type const& a, typename String::value_type const& b) {
			return tolower_ascii(a) == tolower_ascii(b);
		});
	}
	else {
		return 
Examining data/libfilezilla-0.25.0/lib/libfilezilla/thread.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/thread_pool.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/time.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/tls_info.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/tls_layer.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/tls_system_trust_store.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/translate.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/uri.hpp
Examining data/libfilezilla-0.25.0/lib/libfilezilla/util.hpp
Examining data/libfilezilla-0.25.0/lib/glue/unix.cpp
Examining data/libfilezilla-0.25.0/lib/tls_layer_impl.hpp
Examining data/libfilezilla-0.25.0/lib/tls_system_trust_store_impl.hpp
Examining data/libfilezilla-0.25.0/lib/buffer.cpp
Examining data/libfilezilla-0.25.0/lib/encode.cpp
Examining data/libfilezilla-0.25.0/lib/encryption.cpp
Examining data/libfilezilla-0.25.0/lib/event.cpp
Examining data/libfilezilla-0.25.0/lib/event_handler.cpp
Examining data/libfilezilla-0.25.0/lib/event_loop.cpp
Examining data/libfilezilla-0.25.0/lib/file.cpp
Examining data/libfilezilla-0.25.0/lib/hash.cpp
Examining data/libfilezilla-0.25.0/lib/invoker.cpp
Examining data/libfilezilla-0.25.0/lib/iputils.cpp
Examining data/libfilezilla-0.25.0/lib/local_filesys.cpp
Examining data/libfilezilla-0.25.0/lib/mutex.cpp
Examining data/libfilezilla-0.25.0/lib/process.cpp
Examining data/libfilezilla-0.25.0/lib/rate_limiter.cpp
Examining data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp
Examining data/libfilezilla-0.25.0/lib/recursive_remove.cpp
Examining data/libfilezilla-0.25.0/lib/signature.cpp
Examining data/libfilezilla-0.25.0/lib/socket.cpp
Examining data/libfilezilla-0.25.0/lib/socket_errors.cpp
Examining data/libfilezilla-0.25.0/lib/string.cpp
Examining data/libfilezilla-0.25.0/lib/thread.cpp
Examining data/libfilezilla-0.25.0/lib/thread_pool.cpp
Examining data/libfilezilla-0.25.0/lib/tls_info.cpp
Examining data/libfilezilla-0.25.0/lib/tls_layer.cpp
Examining data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp
Examining data/libfilezilla-0.25.0/lib/tls_system_trust_store.cpp
Examining data/libfilezilla-0.25.0/lib/time.cpp
Examining data/libfilezilla-0.25.0/lib/translate.cpp
Examining data/libfilezilla-0.25.0/lib/uri.cpp
Examining data/libfilezilla-0.25.0/lib/util.cpp
Examining data/libfilezilla-0.25.0/lib/version.cpp
Examining data/libfilezilla-0.25.0/demos/events.cpp
Examining data/libfilezilla-0.25.0/demos/list.cpp
Examining data/libfilezilla-0.25.0/demos/process.cpp
Examining data/libfilezilla-0.25.0/demos/timer_fizzbuzz.cpp
Examining data/libfilezilla-0.25.0/tests/test_utils.hpp
Examining data/libfilezilla-0.25.0/tests/ratelimit.cpp
Examining data/libfilezilla-0.25.0/tests/test.cpp
Examining data/libfilezilla-0.25.0/tests/buffer.cpp
Examining data/libfilezilla-0.25.0/tests/crypto.cpp
Examining data/libfilezilla-0.25.0/tests/dispatch.cpp
Examining data/libfilezilla-0.25.0/tests/eventloop.cpp
Examining data/libfilezilla-0.25.0/tests/format.cpp
Examining data/libfilezilla-0.25.0/tests/iputils.cpp
Examining data/libfilezilla-0.25.0/tests/smart_pointer.cpp
Examining data/libfilezilla-0.25.0/tests/socket.cpp
Examining data/libfilezilla-0.25.0/tests/string.cpp
Examining data/libfilezilla-0.25.0/tests/time.cpp
Examining data/libfilezilla-0.25.0/tests/util.cpp

FINAL RESULTS:

data/libfilezilla-0.25.0/lib/local_filesys.cpp:727:16:  [5] (race) readlink:
  This accepts filename arguments; if an attacker can move those files or
  change the link content, a race condition results. Also, it does not
  terminate with ASCII NUL. (CWE-362, CWE-20). Reconsider approach.
	ssize_t res = readlink(path.c_str(), out, size);
data/libfilezilla-0.25.0/lib/libfilezilla/format.hpp:407:13:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
std::string sprintf(std::string_view const& fmt, Args&&... args)
data/libfilezilla-0.25.0/lib/libfilezilla/format.hpp:413:14:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
std::wstring sprintf(std::wstring_view const& fmt, Args&&... args)
data/libfilezilla-0.25.0/lib/libfilezilla/glue/wx.hpp:32:14:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
std::wstring sprintf(T const& fmt, Args&&... args)
data/libfilezilla-0.25.0/lib/libfilezilla/glue/wx.hpp:34:9:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	return sprintf(fmt.ToStdWstring(), std::forward<Args>(args)...);
data/libfilezilla-0.25.0/lib/libfilezilla/logger.hpp:67:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
			std::wstring formatted = fz::to_wstring(fz::sprintf(std::forward<String>(fmt), std::forward<Args>(args)...));
data/libfilezilla-0.25.0/lib/process.cpp:404:4:  [4] (shell) execv:
  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.
			execv(cmd.c_str(), argV.get()); // noreturn on success
data/libfilezilla-0.25.0/lib/process.cpp:724:4:  [4] (shell) execv:
  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.
			execv(argV.get()[0], argV.get());
data/libfilezilla-0.25.0/lib/recursive_remove.cpp:47:3:  [4] (buffer) wcscpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using a function version that stops copying at the end
  of the buffer.
		wcscpy(p, dir.c_str());
data/libfilezilla-0.25.0/lib/socket_errors.cpp:143:9:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	return sprintf(fzT("%d"), error);
data/libfilezilla-0.25.0/lib/time.cpp:792:9:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	return sprintf("%s, %02d %s %d %02d:%02d:%02d GMT", wdays[t.tm_wday], t.tm_mday, months[t.tm_mon], t.tm_year + 1900,
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1729:14:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	auto list = sprintf("Ciphers for %s:\n", priority.empty() ? ciphers : priority);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1735:11:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		list += sprintf("gnutls_priority_init failed with code %d: %s", ret, err ? err : "Unknown error");
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1754:13:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
				list += sprintf(
data/libfilezilla-0.25.0/tests/format.cpp:26:47:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
	CPPUNIT_ASSERT_EQUAL(std::string("foo"), fz::sprintf("foo"));
data/libfilezilla-0.25.0/tests/format.cpp:27:53:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
	CPPUNIT_ASSERT_EQUAL(std::string("foo % bar"), fz::sprintf("foo %% bar"));
data/libfilezilla-0.25.0/tests/format.cpp:31:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", std::string("bar")));
data/libfilezilla-0.25.0/tests/format.cpp:32:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", std::wstring(L"bar")));
data/libfilezilla-0.25.0/tests/format.cpp:36:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:37:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("   0"), fz::sprintf("%4d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:38:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0000"), fz::sprintf("%04d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:39:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("   0"), fz::sprintf("% 4d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:40:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 000"), fz::sprintf("% 04d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:41:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 000"), fz::sprintf("%0 4d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:43:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%0d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:44:46:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 0"), fz::sprintf("% 0d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:45:46:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 0"), fz::sprintf("% d", 0));
data/libfilezilla-0.25.0/tests/format.cpp:47:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("1"), fz::sprintf("%d", 1));
data/libfilezilla-0.25.0/tests/format.cpp:48:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("   1"), fz::sprintf("%4d", 1));
data/libfilezilla-0.25.0/tests/format.cpp:49:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0001"), fz::sprintf("%04d", 1));
data/libfilezilla-0.25.0/tests/format.cpp:50:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("   1"), fz::sprintf("% 4d", 1));
data/libfilezilla-0.25.0/tests/format.cpp:51:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 001"), fz::sprintf("% 04d", 1));
data/libfilezilla-0.25.0/tests/format.cpp:52:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 001"), fz::sprintf("%0 4d", 1));
data/libfilezilla-0.25.0/tests/format.cpp:54:47:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("123"), fz::sprintf("%d", 123));
data/libfilezilla-0.25.0/tests/format.cpp:55:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("%4d", 123));
data/libfilezilla-0.25.0/tests/format.cpp:56:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0123"), fz::sprintf("%04d", 123));
data/libfilezilla-0.25.0/tests/format.cpp:57:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("% 4d", 123));
data/libfilezilla-0.25.0/tests/format.cpp:58:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("% 04d", 123));
data/libfilezilla-0.25.0/tests/format.cpp:59:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("%0 4d", 123));
data/libfilezilla-0.25.0/tests/format.cpp:61:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("1234"), fz::sprintf("%d", 1234));
data/libfilezilla-0.25.0/tests/format.cpp:62:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("1234"), fz::sprintf("%4d", 1234));
data/libfilezilla-0.25.0/tests/format.cpp:63:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("1234"), fz::sprintf("%04d", 1234));
data/libfilezilla-0.25.0/tests/format.cpp:64:49:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 1234"), fz::sprintf("% 4d", 1234));
data/libfilezilla-0.25.0/tests/format.cpp:65:49:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 1234"), fz::sprintf("% 04d", 1234));
data/libfilezilla-0.25.0/tests/format.cpp:66:49:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 1234"), fz::sprintf("%0 4d", 1234));
data/libfilezilla-0.25.0/tests/format.cpp:68:49:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("12345"), fz::sprintf("%d", 12345));
data/libfilezilla-0.25.0/tests/format.cpp:69:49:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("12345"), fz::sprintf("%4d", 12345));
data/libfilezilla-0.25.0/tests/format.cpp:70:49:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("12345"), fz::sprintf("%04d", 12345));
data/libfilezilla-0.25.0/tests/format.cpp:71:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 12345"), fz::sprintf("% 4d", 12345));
data/libfilezilla-0.25.0/tests/format.cpp:72:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 12345"), fz::sprintf("% 04d", 12345));
data/libfilezilla-0.25.0/tests/format.cpp:73:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 12345"), fz::sprintf("%0 4d", 12345));
data/libfilezilla-0.25.0/tests/format.cpp:75:47:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("%d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:76:47:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("%d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:77:47:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("%0d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:78:47:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("% d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:79:47:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("% 0d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:81:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" -42"), fz::sprintf("%4d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:82:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" -42"), fz::sprintf("%4d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:83:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-042"), fz::sprintf("%04d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:84:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" -42"), fz::sprintf("% 4d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:85:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-042"), fz::sprintf("% 04d", -42));
data/libfilezilla-0.25.0/tests/format.cpp:87:53:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("foo 7 foo"), fz::sprintf("%2$s %1$d %2$s", 7, "foo"));
data/libfilezilla-0.25.0/tests/format.cpp:89:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%x", 0));
data/libfilezilla-0.25.0/tests/format.cpp:90:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:91:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23BF0A"), fz::sprintf("%X", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:92:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%0x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:93:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:94:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% 0x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:95:46:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("0a"), fz::sprintf("%02x", 10));
data/libfilezilla-0.25.0/tests/format.cpp:97:48:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("   0"), fz::sprintf("%4x", 0));
data/libfilezilla-0.25.0/tests/format.cpp:98:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%4x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:99:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23BF0A"), fz::sprintf("%4X", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:100:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%04x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:101:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% 4x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:102:50:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% 04x", 2342666));
data/libfilezilla-0.25.0/tests/format.cpp:104:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("77     "), fz::sprintf("%-7d", 77));
data/libfilezilla-0.25.0/tests/format.cpp:105:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("%-7d", -77));
data/libfilezilla-0.25.0/tests/format.cpp:106:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 77    "), fz::sprintf("% -7d", 77));
data/libfilezilla-0.25.0/tests/format.cpp:107:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("% -7d", -77));
data/libfilezilla-0.25.0/tests/format.cpp:108:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string(" 77    "), fz::sprintf("%- 7d", 77));
data/libfilezilla-0.25.0/tests/format.cpp:109:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("%- 7d", -77));
data/libfilezilla-0.25.0/tests/format.cpp:113:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("    +77"), fz::sprintf("%+7d", 77));
data/libfilezilla-0.25.0/tests/format.cpp:114:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("    -77"), fz::sprintf("%+7d", -77));
data/libfilezilla-0.25.0/tests/format.cpp:115:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("+77    "), fz::sprintf("%+-7d", 77));
data/libfilezilla-0.25.0/tests/format.cpp:116:51:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("%+-7d", -77));
data/libfilezilla-0.25.0/tests/format.cpp:118:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%c", char('x')));
data/libfilezilla-0.25.0/tests/format.cpp:119:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%c", int('x')));
data/libfilezilla-0.25.0/tests/format.cpp:121:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%s", std::string_view("x", 1)));
data/libfilezilla-0.25.0/tests/format.cpp:122:45:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%s", std::wstring_view(L"x", 1)));
data/libfilezilla-0.25.0/lib/file.cpp:67:11:  [3] (misc) AddAccessAllowedAce:
  This doesn't set the inheritance bits in the access control entry (ACE)
  header (CWE-732). Make sure that you set inheritance by hand if you wish it
  to inherit.
						if (AddAccessAllowedAce(acl, ACL_REVISION, GENERIC_ALL | STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL, tu->User.Sid)) {
data/libfilezilla-0.25.0/lib/libfilezilla/mutex.hpp:71:3:  [3] (misc) EnterCriticalSection:
  On some versions of Windows, exceptions can be thrown in low-memory
  situations. Use InitializeCriticalSectionAndSpinCount instead.
		EnterCriticalSection(m_);
data/libfilezilla-0.25.0/lib/libfilezilla/mutex.hpp:119:3:  [3] (misc) EnterCriticalSection:
  On some versions of Windows, exceptions can be thrown in low-memory
  situations. Use InitializeCriticalSectionAndSpinCount instead.
		EnterCriticalSection(m_);
data/libfilezilla-0.25.0/lib/mutex.cpp:73:2:  [3] (misc) EnterCriticalSection:
  On some versions of Windows, exceptions can be thrown in low-memory
  situations. Use InitializeCriticalSectionAndSpinCount instead.
	EnterCriticalSection(&m_);
data/libfilezilla-0.25.0/demos/process.cpp:60: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[100];
data/libfilezilla-0.25.0/demos/process.cpp:98: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[100];
data/libfilezilla-0.25.0/lib/buffer.cpp:19: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_, buf.pos_, buf.size_);
data/libfilezilla-0.25.0/lib/buffer.cpp:52:5:  [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(d, pos_, size_);
data/libfilezilla-0.25.0/lib/buffer.cpp:69: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(d, buf.pos_, buf.size_);
data/libfilezilla-0.25.0/lib/buffer.cpp:146:5:  [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(d, pos_, size_);
data/libfilezilla-0.25.0/lib/buffer.cpp:155: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(pos_ + size_, data, len);
data/libfilezilla-0.25.0/lib/buffer.cpp:175: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(d, pos_, size_);
data/libfilezilla-0.25.0/lib/encode.cpp:73: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 const chars[256] =
data/libfilezilla-0.25.0/lib/encode.cpp:275: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 const chars_s[256] =
data/libfilezilla-0.25.0/lib/encode.cpp:295: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 const chars_h[256] =
data/libfilezilla-0.25.0/lib/encode.cpp:315: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 const chars_l[256] =
data/libfilezilla-0.25.0/lib/encryption.cpp:181: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(ret.data(), ephemeral_pub.key_.data(), public_key::key_size);
data/libfilezilla-0.25.0/lib/encryption.cpp:182: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(ret.data() + public_key::key_size, ephemeral_pub.salt_.data(), public_key::salt_size);
data/libfilezilla-0.25.0/lib/encryption.cpp:198: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(ret.data(), ephemeral_pub.key_.data(), public_key::key_size);
data/libfilezilla-0.25.0/lib/encryption.cpp:199: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(ret.data() + public_key::key_size, ephemeral_pub.salt_.data(), public_key::salt_size);
data/libfilezilla-0.25.0/lib/encryption.cpp:251: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(ephemeral_pub.key_.data(), cipher, public_key::key_size);
data/libfilezilla-0.25.0/lib/encryption.cpp:252: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(ephemeral_pub.salt_.data(), cipher + public_key::key_size, public_key::salt_size);
data/libfilezilla-0.25.0/lib/encryption.cpp:412: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(tmp.data(), key_.data(), key_.size());
data/libfilezilla-0.25.0/lib/encryption.cpp:413: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(tmp.data() + key_.size(), salt_.data(), salt_.size());
data/libfilezilla-0.25.0/lib/encryption.cpp:478: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(ret.data(), nonce.data(), symmetric_key::salt_size);
data/libfilezilla-0.25.0/lib/file.cpp:16:2:  [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(f, m, d);
data/libfilezilla-0.25.0/lib/file.cpp:25:12:  [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).
bool file::open(native_string const& f, mode m, creation_flags d)
data/libfilezilla-0.25.0/lib/file.cpp:189:12:  [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).
bool file::open(native_string const& f, mode m, creation_flags d)
data/libfilezilla-0.25.0/lib/file.cpp:207: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).
	fd_ = ::open(f.c_str(), flags, mode);
data/libfilezilla-0.25.0/lib/libfilezilla/file.hpp:66:7:  [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).
	bool open(native_string const& f, mode m, creation_flags d = existing);
data/libfilezilla-0.25.0/lib/local_filesys.cpp:725: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 out[size];
data/libfilezilla-0.25.0/lib/process.cpp:328: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(ret.get(), arg.c_str(), arg.size() + 1);
data/libfilezilla-0.25.0/lib/socket.cpp:701:6:  [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(&bindAddr.storage, bindAddressList->ai_addr, bindAddressList->ai_addrlen);
data/libfilezilla-0.25.0/lib/socket.cpp:878:5:  [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 buffer[100];
data/libfilezilla-0.25.0/lib/socket.cpp:975:5:  [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 buffer[8];
data/libfilezilla-0.25.0/lib/socket.cpp:979:5:  [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 buffer[100];
data/libfilezilla-0.25.0/lib/socket.cpp:1266: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 hostbuf[NI_MAXHOST];
data/libfilezilla-0.25.0/lib/socket.cpp:1267: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 portbuf[NI_MAXSERV];
data/libfilezilla-0.25.0/lib/socket.cpp:1307: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(&addr.in6.sin6_addr, buf, buf_len);
data/libfilezilla-0.25.0/lib/socket.cpp:1311: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(&addr.in4.sin_addr, buf, buf_len);
data/libfilezilla-0.25.0/lib/string.cpp:153:23:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
		int const out_len = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, in_p, static_cast<int>(len), nullptr, 0);
data/libfilezilla-0.25.0/lib/string.cpp:157:4:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
			MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, in_p, static_cast<int>(len), out_p, out_len);
data/libfilezilla-0.25.0/lib/string.cpp:298:23:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
		int const out_len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, in_p, static_cast<int>(len), nullptr, 0);
data/libfilezilla-0.25.0/lib/string.cpp:302:4:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
			MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, in_p, static_cast<int>(len), out_p, out_len);
data/libfilezilla-0.25.0/lib/time.cpp:640: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 buf[4096];
data/libfilezilla-0.25.0/lib/time.cpp:652:2:  [2] (buffer) wchar_t:
  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.
	wchar_t buf[4096];
data/libfilezilla-0.25.0/lib/time.cpp:674: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 buf[count];
data/libfilezilla-0.25.0/lib/time.cpp:690:2:  [2] (buffer) wchar_t:
  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.
	wchar_t buf[count];
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1092: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 buffer[40];
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1151: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 digest[100];
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1191: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 san[4096];
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1234: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 buf[256];
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1336: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(concated_certs.data + concated_certs.size, pem_cert_list[i].data, pem_cert_list[i].size);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1750:13:  [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 id[2];
data/libfilezilla-0.25.0/lib/util.cpp:121: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(&ret[i], &v, size - i);
data/libfilezilla-0.25.0/tests/buffer.cpp:36: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(buf2.get(42), "barbaz", 6);
data/libfilezilla-0.25.0/tests/format.cpp:29:51:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", "bar"));
data/libfilezilla-0.25.0/tests/format.cpp:30:51:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", L"bar"));
data/libfilezilla-0.25.0/tests/format.cpp:110:51:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
	CPPUNIT_ASSERT_EQUAL(std::string("ok     "), fz::sprintf("%- 7s", "ok"));
data/libfilezilla-0.25.0/tests/format.cpp:111:49:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
	CPPUNIT_ASSERT_EQUAL(std::string("hello"), fz::sprintf("%-3s", "hello"));
data/libfilezilla-0.25.0/tests/socket.cpp:83:14:  [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 buf[1024];
data/libfilezilla-0.25.0/tests/string.cpp:92:2:  [2] (buffer) wchar_t:
  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.
	wchar_t const w[7] = {'A', 0, 'B', 0, 0, 'C', 0};
data/libfilezilla-0.25.0/tests/string.cpp:93: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 const n[7] = {'A', 0, 'B', 0, 0, 'C', 0};
data/libfilezilla-0.25.0/demos/list.cpp:10: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).
	if (argc > 1 && argv[1] && *argv[1] && strlen(argv[1]) < 1000) {
data/libfilezilla-0.25.0/demos/process.cpp:61:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		int r = p.read(buf, 100);
data/libfilezilla-0.25.0/demos/process.cpp:99:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		int r = p.read(buf, 100);
data/libfilezilla-0.25.0/lib/file.cpp:143:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int64_t file::read(void *buf, int64_t count)
data/libfilezilla-0.25.0/lib/file.cpp:148:56:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (ReadFile(hFile_, buf, static_cast<DWORD>(count), &read, nullptr)) {
data/libfilezilla-0.25.0/lib/file.cpp:149:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		ret = static_cast<int64_t>(read);
data/libfilezilla-0.25.0/lib/file.cpp:272:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int64_t file::read(void *buf, int64_t count)
data/libfilezilla-0.25.0/lib/file.cpp:276:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		ret = ::read(fd_, buf, count);
data/libfilezilla-0.25.0/lib/libfilezilla/file.hpp:124:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int64_t read(void *buf, int64_t count);
data/libfilezilla-0.25.0/lib/libfilezilla/process.hpp:61:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read(char* buffer, unsigned int len);
data/libfilezilla-0.25.0/lib/libfilezilla/rate_limited_layer.hpp:24:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	virtual int read(void* buffer, unsigned int size, int& error) override;
data/libfilezilla-0.25.0/lib/libfilezilla/socket.hpp:46:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read,
data/libfilezilla-0.25.0/lib/libfilezilla/socket.hpp:344:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	virtual int read(void* buffer, unsigned int size, int& error) = 0;
data/libfilezilla-0.25.0/lib/libfilezilla/socket.hpp:435:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	virtual int read(void *buffer, unsigned int size, int& error) override;
data/libfilezilla-0.25.0/lib/libfilezilla/string.hpp:213:8:  [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 strlen(Char const* str) {
data/libfilezilla-0.25.0/lib/libfilezilla/string.hpp:493:15:  [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 std::equal(beginning.begin(), beginning.end(), s.begin(), [](typename String::value_type const& a, typename String::value_type const& b) {
data/libfilezilla-0.25.0/lib/libfilezilla/string.hpp:498:15:  [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 std::equal(beginning.begin(), beginning.end(), s.begin());
data/libfilezilla-0.25.0/lib/libfilezilla/string.hpp:514:15:  [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 std::equal(ending.rbegin(), ending.rend(), s.rbegin(), [](typename String::value_type const& a, typename String::value_type const& b) {
data/libfilezilla-0.25.0/lib/libfilezilla/string.hpp:519:15:  [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 std::equal(ending.rbegin(), ending.rend(), s.rbegin());
data/libfilezilla-0.25.0/lib/libfilezilla/tls_layer.hpp:163:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	virtual int read(void *buffer, unsigned int size, int& error) override;
data/libfilezilla-0.25.0/lib/process.cpp:210:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read(char* buffer, unsigned int len)
data/libfilezilla-0.25.0/lib/process.cpp:213:49:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		BOOL res = ReadFile(out_.read_, buffer, len, &read, nullptr);
data/libfilezilla-0.25.0/lib/process.cpp:223:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		return read;
data/libfilezilla-0.25.0/lib/process.cpp:441:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read(char* buffer, unsigned int len)
data/libfilezilla-0.25.0/lib/process.cpp:445:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			r = ::read(out_.read_, buffer, len);
data/libfilezilla-0.25.0/lib/process.cpp:510:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int process::read(char* buffer, unsigned int len)
data/libfilezilla-0.25.0/lib/process.cpp:512:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	return impl_ ? impl_->read(buffer, len) : -1;
data/libfilezilla-0.25.0/lib/process.cpp:757:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				r = ::read(errpipe.read_, &tmp, 1);
data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp:27:69:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		event_handler_->send_event<socket_event>(this, socket_event_flag::read, 0);
data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp:34:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int rate_limited_layer::read(void* buffer, unsigned int size, int& error)
data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp:47:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read = next_layer_.read(buffer, size, error);
data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp:48:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (read > 0 && max != rate::unlimited) {
data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp:49:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		consume(direction::inbound, read);
data/libfilezilla-0.25.0/lib/rate_limited_layer.cpp:52:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	return read;
data/libfilezilla-0.25.0/lib/socket.cpp:880:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				int damn_spurious_warning = read(event_fd_, buffer, 8);
data/libfilezilla-0.25.0/lib/socket.cpp:882:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				int damn_spurious_warning = read(pipe_[0], buffer, 100);
data/libfilezilla-0.25.0/lib/socket.cpp:976:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				int damn_spurious_warning = read(event_fd_, buffer, 8);
data/libfilezilla-0.25.0/lib/socket.cpp:980:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				int damn_spurious_warning = read(pipe_[0], buffer, 100);
data/libfilezilla-0.25.0/lib/socket.cpp:1049:92:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			socket_->evt_handler_->send_event<socket_event>(socket_->ev_source_, socket_event_flag::read, triggered_errors_[1]);
data/libfilezilla-0.25.0/lib/socket.cpp:1697:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int socket::read(void* buffer, unsigned int size, int& error)
data/libfilezilla-0.25.0/lib/socket.cpp:1848:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (event != socket_event_flag::read && event != socket_event_flag::write) {
data/libfilezilla-0.25.0/lib/socket.cpp:1863:53:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int const wait_flag = (event == socket_event_flag::read) ? WAIT_READ : WAIT_WRITE;
data/libfilezilla-0.25.0/lib/socket.cpp:1899:190:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		if ((state_ == socket_state::connected || state_ == socket_state::shut_down) && !(socket_thread_->waiting_ & WAIT_READ) && !has_pending_event(evt_handler_, ev_source_, socket_event_flag::read)) {
data/libfilezilla-0.25.0/lib/socket.cpp:1900:73:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			pEvtHandler->send_event<socket_event>(ev_source_, socket_event_flag::read, 0);
data/libfilezilla-0.25.0/lib/tls_layer.cpp:39:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int tls_layer::read(void *buffer, unsigned int size, int& error)
data/libfilezilla-0.25.0/lib/tls_layer.cpp:41:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	return impl_->read(buffer, size, error);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:251:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	auto read = kf.read(k.data(), ks);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:252:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (read != ks) {
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:270:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read = cf.read(c.data(), cs);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:271:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (read != cs) {
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:513:36:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read = tls_layer_.next_layer_.read(data, static_cast<unsigned int>(len), error);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:514:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (read < 0) {
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:528:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if (!read) {
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:533:54:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	logger_.log(logmsg::debug_debug, L"  returning %d", read);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:536:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	return read;
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:571:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	case socket_event_flag::read:
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:601:88:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			tls_layer_.event_handler_->send_event<socket_event>(&tls_layer_, socket_event_flag::read, 0);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:828:90:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					tls_layer_.event_handler_->send_event<socket_event>(&tls_layer_, socket_event_flag::read, 0);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:853:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
int tls_layer_impl::read(void *buffer, unsigned int len, int& error)
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:966:88:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			tls_layer_.event_handler_->send_event<socket_event>(&tls_layer_, socket_event_flag::read, error);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1051:89:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				tls_layer_.event_handler_->send_event<socket_event>(&tls_layer_, socket_event_flag::read, 0);
data/libfilezilla-0.25.0/lib/tls_layer_impl.cpp:1996:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int res = tls_layer_.next_layer_.read(&c, 1, error);
data/libfilezilla-0.25.0/lib/tls_layer_impl.hpp:35:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read(void *buffer, unsigned int size, int& error);
data/libfilezilla-0.25.0/tests/format.cpp:34:48:  [1] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source is a constant character.
	CPPUNIT_ASSERT_EQUAL(std::string("    "), fz::sprintf("%4s", " "));
data/libfilezilla-0.25.0/tests/socket.cpp:81:43:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		else if (type == fz::socket_event_flag::read) {
data/libfilezilla-0.25.0/tests/socket.cpp:86:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				int r = si_->read(buf, 1024, error);
data/libfilezilla-0.25.0/tests/socket.cpp:110:64:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			send_event(new fz::socket_event(si_, fz::socket_event_flag::read, 0));

ANALYSIS SUMMARY:

Hits = 219
Lines analyzed = 21075 in approximately 0.55 seconds (38385 lines/second)
Physical Source Lines of Code (SLOC) = 15056
Hits@level = [0]   1 [1]  67 [2]  59 [3]   4 [4]  88 [5]   1
Hits@level+ = [0+] 220 [1+] 219 [2+] 152 [3+]  93 [4+]  89 [5+]   1
Hits/KSLOC@level+ = [0+] 14.6121 [1+] 14.5457 [2+] 10.0956 [3+] 6.17694 [4+] 5.91126 [5+] 0.0664187
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.