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/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-__func__.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-auto.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-auto_fail_compile.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-auto_ret_type.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-builtin-swap.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-chrono.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-class_override_final.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-class_override_final_fail_compile.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-constexpr.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-cstdint.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-decltype.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-declval.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-functional.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-initializer_list.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-lambda.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-long_long.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-noexcept.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-nullptr.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-nullptr_fail_compile.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-regex.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-rvalue-references.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-sizeof_member.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-sizeof_member_fail.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-static_assert.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-static_assert_fail_compile.cpp
Examining data/libtins-4.0/cmake/Modules/CheckCXXFeatures/cxx-test-variadic_templates.cpp
Examining data/libtins-4.0/examples/arpmonitor.cpp
Examining data/libtins-4.0/examples/arpspoofing.cpp
Examining data/libtins-4.0/examples/beacon_display.cpp
Examining data/libtins-4.0/examples/defragmenter.cpp
Examining data/libtins-4.0/examples/dns_queries.cpp
Examining data/libtins-4.0/examples/dns_spoof.cpp
Examining data/libtins-4.0/examples/dns_stats.cpp
Examining data/libtins-4.0/examples/http_requests.cpp
Examining data/libtins-4.0/examples/icmp_responses.cpp
Examining data/libtins-4.0/examples/interfaces_info.cpp
Examining data/libtins-4.0/examples/portscan.cpp
Examining data/libtins-4.0/examples/route_table.cpp
Examining data/libtins-4.0/examples/stream_dump.cpp
Examining data/libtins-4.0/examples/tcp_connection_close.cpp
Examining data/libtins-4.0/examples/traceroute.cpp
Examining data/libtins-4.0/examples/wps_detect.cpp
Examining data/libtins-4.0/include/tins/address_range.h
Examining data/libtins-4.0/include/tins/arp.h
Examining data/libtins-4.0/include/tins/bootp.h
Examining data/libtins-4.0/include/tins/constants.h
Examining data/libtins-4.0/include/tins/crypto.h
Examining data/libtins-4.0/include/tins/cxxstd.h
Examining data/libtins-4.0/include/tins/data_link_type.h
Examining data/libtins-4.0/include/tins/detail/address_helpers.h
Examining data/libtins-4.0/include/tins/detail/icmp_extension_helpers.h
Examining data/libtins-4.0/include/tins/detail/pdu_helpers.h
Examining data/libtins-4.0/include/tins/detail/sequence_number_helpers.h
Examining data/libtins-4.0/include/tins/detail/smart_ptr.h
Examining data/libtins-4.0/include/tins/detail/type_traits.h
Examining data/libtins-4.0/include/tins/dhcp.h
Examining data/libtins-4.0/include/tins/dhcpv6.h
Examining data/libtins-4.0/include/tins/dns.h
Examining data/libtins-4.0/include/tins/dot11.h
Examining data/libtins-4.0/include/tins/dot11/dot11_assoc.h
Examining data/libtins-4.0/include/tins/dot11/dot11_auth.h
Examining data/libtins-4.0/include/tins/dot11/dot11_base.h
Examining data/libtins-4.0/include/tins/dot11/dot11_beacon.h
Examining data/libtins-4.0/include/tins/dot11/dot11_control.h
Examining data/libtins-4.0/include/tins/dot11/dot11_data.h
Examining data/libtins-4.0/include/tins/dot11/dot11_mgmt.h
Examining data/libtins-4.0/include/tins/dot11/dot11_probe.h
Examining data/libtins-4.0/include/tins/dot1q.h
Examining data/libtins-4.0/include/tins/dot3.h
Examining data/libtins-4.0/include/tins/eapol.h
Examining data/libtins-4.0/include/tins/endianness.h
Examining data/libtins-4.0/include/tins/ethernetII.h
Examining data/libtins-4.0/include/tins/exceptions.h
Examining data/libtins-4.0/include/tins/handshake_capturer.h
Examining data/libtins-4.0/include/tins/hw_address.h
Examining data/libtins-4.0/include/tins/icmp.h
Examining data/libtins-4.0/include/tins/icmp_extension.h
Examining data/libtins-4.0/include/tins/icmpv6.h
Examining data/libtins-4.0/include/tins/ieee802_3.h
Examining data/libtins-4.0/include/tins/internals.h
Examining data/libtins-4.0/include/tins/ip.h
Examining data/libtins-4.0/include/tins/ip_address.h
Examining data/libtins-4.0/include/tins/ip_reassembler.h
Examining data/libtins-4.0/include/tins/ipsec.h
Examining data/libtins-4.0/include/tins/ipv6.h
Examining data/libtins-4.0/include/tins/ipv6_address.h
Examining data/libtins-4.0/include/tins/llc.h
Examining data/libtins-4.0/include/tins/loopback.h
Examining data/libtins-4.0/include/tins/macros.h
Examining data/libtins-4.0/include/tins/memory_helpers.h
Examining data/libtins-4.0/include/tins/mpls.h
Examining data/libtins-4.0/include/tins/network_interface.h
Examining data/libtins-4.0/include/tins/offline_packet_filter.h
Examining data/libtins-4.0/include/tins/packet.h
Examining data/libtins-4.0/include/tins/packet_sender.h
Examining data/libtins-4.0/include/tins/packet_writer.h
Examining data/libtins-4.0/include/tins/pdu.h
Examining data/libtins-4.0/include/tins/pdu_allocator.h
Examining data/libtins-4.0/include/tins/pdu_cacher.h
Examining data/libtins-4.0/include/tins/pdu_iterator.h
Examining data/libtins-4.0/include/tins/pdu_option.h
Examining data/libtins-4.0/include/tins/pktap.h
Examining data/libtins-4.0/include/tins/ppi.h
Examining data/libtins-4.0/include/tins/pppoe.h
Examining data/libtins-4.0/include/tins/radiotap.h
Examining data/libtins-4.0/include/tins/rawpdu.h
Examining data/libtins-4.0/include/tins/rsn_information.h
Examining data/libtins-4.0/include/tins/sll.h
Examining data/libtins-4.0/include/tins/small_uint.h
Examining data/libtins-4.0/include/tins/snap.h
Examining data/libtins-4.0/include/tins/sniffer.h
Examining data/libtins-4.0/include/tins/stp.h
Examining data/libtins-4.0/include/tins/tcp.h
Examining data/libtins-4.0/include/tins/tcp_ip/ack_tracker.h
Examining data/libtins-4.0/include/tins/tcp_ip/data_tracker.h
Examining data/libtins-4.0/include/tins/tcp_ip/flow.h
Examining data/libtins-4.0/include/tins/tcp_ip/stream.h
Examining data/libtins-4.0/include/tins/tcp_ip/stream_follower.h
Examining data/libtins-4.0/include/tins/tcp_ip/stream_identifier.h
Examining data/libtins-4.0/include/tins/tcp_stream.h
Examining data/libtins-4.0/include/tins/timestamp.h
Examining data/libtins-4.0/include/tins/tins.h
Examining data/libtins-4.0/include/tins/udp.h
Examining data/libtins-4.0/include/tins/utils.h
Examining data/libtins-4.0/include/tins/utils/checksum_utils.h
Examining data/libtins-4.0/include/tins/utils/frequency_utils.h
Examining data/libtins-4.0/include/tins/utils/pdu_utils.h
Examining data/libtins-4.0/include/tins/utils/radiotap_parser.h
Examining data/libtins-4.0/include/tins/utils/radiotap_writer.h
Examining data/libtins-4.0/include/tins/utils/resolve_utils.h
Examining data/libtins-4.0/include/tins/utils/routing_utils.h
Examining data/libtins-4.0/src/address_range.cpp
Examining data/libtins-4.0/src/arp.cpp
Examining data/libtins-4.0/src/bootp.cpp
Examining data/libtins-4.0/src/crypto.cpp
Examining data/libtins-4.0/src/detail/address_helpers.cpp
Examining data/libtins-4.0/src/detail/icmp_extension_helpers.cpp
Examining data/libtins-4.0/src/detail/pdu_helpers.cpp
Examining data/libtins-4.0/src/detail/sequence_number_helpers.cpp
Examining data/libtins-4.0/src/dhcp.cpp
Examining data/libtins-4.0/src/dhcpv6.cpp
Examining data/libtins-4.0/src/dns.cpp
Examining data/libtins-4.0/src/dot11/dot11_assoc.cpp
Examining data/libtins-4.0/src/dot11/dot11_auth.cpp
Examining data/libtins-4.0/src/dot11/dot11_base.cpp
Examining data/libtins-4.0/src/dot11/dot11_beacon.cpp
Examining data/libtins-4.0/src/dot11/dot11_control.cpp
Examining data/libtins-4.0/src/dot11/dot11_data.cpp
Examining data/libtins-4.0/src/dot11/dot11_mgmt.cpp
Examining data/libtins-4.0/src/dot11/dot11_probe.cpp
Examining data/libtins-4.0/src/dot1q.cpp
Examining data/libtins-4.0/src/dot3.cpp
Examining data/libtins-4.0/src/eapol.cpp
Examining data/libtins-4.0/src/ethernetII.cpp
Examining data/libtins-4.0/src/handshake_capturer.cpp
Examining data/libtins-4.0/src/hw_address.cpp
Examining data/libtins-4.0/src/icmp.cpp
Examining data/libtins-4.0/src/icmp_extension.cpp
Examining data/libtins-4.0/src/icmpv6.cpp
Examining data/libtins-4.0/src/ip.cpp
Examining data/libtins-4.0/src/ip_address.cpp
Examining data/libtins-4.0/src/ip_reassembler.cpp
Examining data/libtins-4.0/src/ipsec.cpp
Examining data/libtins-4.0/src/ipv6.cpp
Examining data/libtins-4.0/src/ipv6_address.cpp
Examining data/libtins-4.0/src/llc.cpp
Examining data/libtins-4.0/src/loopback.cpp
Examining data/libtins-4.0/src/memory_helpers.cpp
Examining data/libtins-4.0/src/mpls.cpp
Examining data/libtins-4.0/src/network_interface.cpp
Examining data/libtins-4.0/src/offline_packet_filter.cpp
Examining data/libtins-4.0/src/packet_sender.cpp
Examining data/libtins-4.0/src/packet_writer.cpp
Examining data/libtins-4.0/src/pdu.cpp
Examining data/libtins-4.0/src/pdu_iterator.cpp
Examining data/libtins-4.0/src/pdu_option.cpp
Examining data/libtins-4.0/src/pktap.cpp
Examining data/libtins-4.0/src/ppi.cpp
Examining data/libtins-4.0/src/pppoe.cpp
Examining data/libtins-4.0/src/radiotap.cpp
Examining data/libtins-4.0/src/rawpdu.cpp
Examining data/libtins-4.0/src/rsn_information.cpp
Examining data/libtins-4.0/src/sll.cpp
Examining data/libtins-4.0/src/snap.cpp
Examining data/libtins-4.0/src/sniffer.cpp
Examining data/libtins-4.0/src/stp.cpp
Examining data/libtins-4.0/src/tcp.cpp
Examining data/libtins-4.0/src/tcp_ip/ack_tracker.cpp
Examining data/libtins-4.0/src/tcp_ip/data_tracker.cpp
Examining data/libtins-4.0/src/tcp_ip/flow.cpp
Examining data/libtins-4.0/src/tcp_ip/stream.cpp
Examining data/libtins-4.0/src/tcp_ip/stream_follower.cpp
Examining data/libtins-4.0/src/tcp_ip/stream_identifier.cpp
Examining data/libtins-4.0/src/tcp_stream.cpp
Examining data/libtins-4.0/src/timestamp.cpp
Examining data/libtins-4.0/src/udp.cpp
Examining data/libtins-4.0/src/utils/checksum_utils.cpp
Examining data/libtins-4.0/src/utils/frequency_utils.cpp
Examining data/libtins-4.0/src/utils/pdu_utils.cpp
Examining data/libtins-4.0/src/utils/radiotap_parser.cpp
Examining data/libtins-4.0/src/utils/radiotap_writer.cpp
Examining data/libtins-4.0/src/utils/resolve_utils.cpp
Examining data/libtins-4.0/src/utils/routing_utils.cpp
Examining data/libtins-4.0/tests/active_tests/include/active_test.h
Examining data/libtins-4.0/tests/active_tests/include/active_test_runner.h
Examining data/libtins-4.0/tests/active_tests/include/configuration.h
Examining data/libtins-4.0/tests/active_tests/include/ipv4_tests.h
Examining data/libtins-4.0/tests/active_tests/include/packet_capturer.h
Examining data/libtins-4.0/tests/active_tests/include/tcp_tests.h
Examining data/libtins-4.0/tests/active_tests/include/test_utils.h
Examining data/libtins-4.0/tests/active_tests/include/utils_tests.h
Examining data/libtins-4.0/tests/active_tests/src/active_test.cpp
Examining data/libtins-4.0/tests/active_tests/src/active_test_runner.cpp
Examining data/libtins-4.0/tests/active_tests/src/configuration.cpp
Examining data/libtins-4.0/tests/active_tests/src/ipv4_tests.cpp
Examining data/libtins-4.0/tests/active_tests/src/main.cpp
Examining data/libtins-4.0/tests/active_tests/src/packet_capturer.cpp
Examining data/libtins-4.0/tests/active_tests/src/tcp_tests.cpp
Examining data/libtins-4.0/tests/active_tests/src/test_utils.cpp
Examining data/libtins-4.0/tests/active_tests/src/utils_test.cpp
Examining data/libtins-4.0/tests/include/tests/dot11.h
Examining data/libtins-4.0/tests/include/tests/dot11_control.h
Examining data/libtins-4.0/tests/include/tests/dot11_data.h
Examining data/libtins-4.0/tests/include/tests/dot11_mgmt.h
Examining data/libtins-4.0/tests/src/address_range_test.cpp
Examining data/libtins-4.0/tests/src/allocators_test.cpp
Examining data/libtins-4.0/tests/src/arp_test.cpp
Examining data/libtins-4.0/tests/src/dhcp_test.cpp
Examining data/libtins-4.0/tests/src/dhcpv6_test.cpp
Examining data/libtins-4.0/tests/src/dns_test.cpp
Examining data/libtins-4.0/tests/src/dot11/ack_test.cpp
Examining data/libtins-4.0/tests/src/dot11/assoc_request_test.cpp
Examining data/libtins-4.0/tests/src/dot11/assoc_response_test.cpp
Examining data/libtins-4.0/tests/src/dot11/authentication_test.cpp
Examining data/libtins-4.0/tests/src/dot11/beacon_test.cpp
Examining data/libtins-4.0/tests/src/dot11/block_ack_request_test.cpp
Examining data/libtins-4.0/tests/src/dot11/cf_end_ack_test.cpp
Examining data/libtins-4.0/tests/src/dot11/cf_end_test.cpp
Examining data/libtins-4.0/tests/src/dot11/data_test.cpp
Examining data/libtins-4.0/tests/src/dot11/deauthentication_test.cpp
Examining data/libtins-4.0/tests/src/dot11/disassoc_test.cpp
Examining data/libtins-4.0/tests/src/dot11/dot11_test.cpp
Examining data/libtins-4.0/tests/src/dot11/probe_request_test.cpp
Examining data/libtins-4.0/tests/src/dot11/probe_response_test.cpp
Examining data/libtins-4.0/tests/src/dot11/ps_poll_test.cpp
Examining data/libtins-4.0/tests/src/dot11/reassoc_request_test.cpp
Examining data/libtins-4.0/tests/src/dot11/reassoc_response_test.cpp
Examining data/libtins-4.0/tests/src/dot11/rts_test.cpp
Examining data/libtins-4.0/tests/src/dot1q_test.cpp
Examining data/libtins-4.0/tests/src/ethernet_test.cpp
Examining data/libtins-4.0/tests/src/hw_address_test.cpp
Examining data/libtins-4.0/tests/src/icmp_extension_test.cpp
Examining data/libtins-4.0/tests/src/icmp_test.cpp
Examining data/libtins-4.0/tests/src/icmpv6_test.cpp
Examining data/libtins-4.0/tests/src/ip_address_test.cpp
Examining data/libtins-4.0/tests/src/ip_reassembler_test.cpp
Examining data/libtins-4.0/tests/src/ip_test.cpp
Examining data/libtins-4.0/tests/src/ipsec_test.cpp
Examining data/libtins-4.0/tests/src/ipv6_address_test.cpp
Examining data/libtins-4.0/tests/src/ipv6_test.cpp
Examining data/libtins-4.0/tests/src/llc_test.cpp
Examining data/libtins-4.0/tests/src/loopback_test.cpp
Examining data/libtins-4.0/tests/src/main_test.cpp
Examining data/libtins-4.0/tests/src/matches_response_test.cpp
Examining data/libtins-4.0/tests/src/mpls_test.cpp
Examining data/libtins-4.0/tests/src/network_interface_test.cpp
Examining data/libtins-4.0/tests/src/offline_packet_filter_test.cpp
Examining data/libtins-4.0/tests/src/pdu_iterator_test.cpp
Examining data/libtins-4.0/tests/src/pdu_test.cpp
Examining data/libtins-4.0/tests/src/pktap_test.cpp
Examining data/libtins-4.0/tests/src/ppi_test.cpp
Examining data/libtins-4.0/tests/src/pppoe_test.cpp
Examining data/libtins-4.0/tests/src/radiotap_test.cpp
Examining data/libtins-4.0/tests/src/raw_pdu_test.cpp
Examining data/libtins-4.0/tests/src/rc4_eapol_test.cpp
Examining data/libtins-4.0/tests/src/rsn_eapol_test.cpp
Examining data/libtins-4.0/tests/src/sll_test.cpp
Examining data/libtins-4.0/tests/src/snap_test.cpp
Examining data/libtins-4.0/tests/src/stp_test.cpp
Examining data/libtins-4.0/tests/src/tcp_ip_test.cpp
Examining data/libtins-4.0/tests/src/tcp_stream_test.cpp
Examining data/libtins-4.0/tests/src/tcp_test.cpp
Examining data/libtins-4.0/tests/src/udp_test.cpp
Examining data/libtins-4.0/tests/src/utils_test.cpp
Examining data/libtins-4.0/tests/src/wep_decrypt_test.cpp
Examining data/libtins-4.0/tests/src/wpa2_decrypt_test.cpp

FINAL RESULTS:

data/libtins-4.0/examples/portscan.cpp:87:30:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        ports_to_scan.insert(atoi(ports[i].c_str()));
data/libtins-4.0/include/tins/hw_address.h:133:18:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
            std::memcpy(buffer_, ptr, address_size);
data/libtins-4.0/include/tins/memory_helpers.h:52:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(output_buffer, buffer, size);
data/libtins-4.0/include/tins/memory_helpers.h:61:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(buffer, ptr, size);
data/libtins-4.0/include/tins/memory_helpers.h:66:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(buffer, &value, sizeof(value));
data/libtins-4.0/include/tins/memory_helpers.h:188:14:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
        std::memcpy(buffer_, &*start, length);
data/libtins-4.0/include/tins/pdu_cacher.h:151:14:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
        std::memcpy(buffer, &*cached_serialization_.begin(), cached_serialization_.size());
data/libtins-4.0/include/tins/pdu_option.h:259:18:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
            std::memcpy(payload_.small_buffer, rhs.data_ptr(), rhs.data_size());
data/libtins-4.0/include/tins/pdu_option.h:402:22:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
                std::memcpy(payload_.small_buffer, &*start, total_size);
data/libtins-4.0/src/dhcpv6.cpp:36:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/dhcpv6.cpp:56:9:  [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[index], &uint16_t_buffer, sizeof(uint16_t));
data/libtins-4.0/src/dhcpv6.cpp:59:13:  [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.begin() + index, &*start->begin(), start->size());
data/libtins-4.0/src/dhcpv6.cpp:74:9:  [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(&size, ptr + index, sizeof(uint16_t));
data/libtins-4.0/src/dns.cpp:40:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/dns.cpp:346:13:  [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(&index, ptr, sizeof(uint16_t));
data/libtins-4.0/src/dns.cpp:370:13:  [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(current_out_ptr, ptr, size);
data/libtins-4.0/src/dns.cpp:392:15:  [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.
    output += sprintf(
data/libtins-4.0/src/dns.cpp:415: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 dname[256], small_addr_buf[256];
data/libtins-4.0/src/dns.cpp:502:13:  [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(&index, ptr, sizeof(uint16_t));
data/libtins-4.0/src/dns.cpp:506:17:  [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(ptr, &index, sizeof(uint16_t));
data/libtins-4.0/src/dns.cpp:529:13:  [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(&type, ptr, sizeof(uint16_t));
data/libtins-4.0/src/dns.cpp:533:13:  [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(&size, ptr, sizeof(uint16_t));
data/libtins-4.0/src/dns.cpp:553: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.
        char buffer[256];
data/libtins-4.0/src/dot11/dot11_base.cpp:206:9:  [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.sll_addr), header_.addr1, 6);
data/libtins-4.0/src/dot11/dot11_control.cpp:236: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(bitmap_, bit, bitmap_size);
data/libtins-4.0/src/dot3.cpp:111:9:  [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.sll_addr), header_.dst_mac, sizeof(header_.dst_mac));
data/libtins-4.0/src/dot3.cpp:153:9:  [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.sll_addr), header_.dst_mac, sizeof(header_.dst_mac));
data/libtins-4.0/src/eapol.cpp:37:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/eapol.cpp:107: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(buffer, &header_, sizeof(header_));
data/libtins-4.0/src/eapol.cpp:193: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(header_.nonce, ptr, nonce_size);
data/libtins-4.0/src/eapol.cpp:197: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(header_.rsc, ptr, rsc_size);
data/libtins-4.0/src/eapol.cpp:201: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(header_.id, ptr, id_size);
data/libtins-4.0/src/eapol.cpp:209: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(header_.mic, ptr, mic_size);
data/libtins-4.0/src/ethernetII.cpp:134:9:  [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.sll_addr), header_.dst_mac, address_type::address_size);
data/libtins-4.0/src/ethernetII.cpp:198:9:  [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.sll_addr), header_.dst_mac, address_type::address_size);
data/libtins-4.0/src/icmp.cpp:279: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(buffer + 2, &header_.check, sizeof(uint16_t));
data/libtins-4.0/src/icmp_extension.cpp:184: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(original_ptr + sizeof(uint16_t), &checksum, sizeof(checksum));
data/libtins-4.0/src/icmpv6.cpp:383:9:  [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 + 2, &header_.cksum, sizeof(uint16_t));
data/libtins-4.0/src/icmpv6.cpp:1015: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(&output.lifetime, ptr + 2, sizeof(uint32_t));
data/libtins-4.0/src/ip.cpp:529:9:  [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(&uint32_t_buffer, route, sizeof(uint32_t));
data/libtins-4.0/src/ipsec.cpp:36:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/ipv6.cpp:298: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((uint8_t*)&link_addr.sin6_addr, header_.dst_addr, address_type::address_size);
data/libtins-4.0/src/ipv6_address.cpp:52:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/ipv6_address.cpp:82: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(address_, ptr, address_size);
data/libtins-4.0/src/ipv6_address.cpp:112: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[INET6_ADDRSTRLEN];
data/libtins-4.0/src/network_interface.cpp:262: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 iface_name[IF_NAMESIZE];
data/libtins-4.0/src/packet_sender.cpp:185: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 error[PCAP_ERRBUF_SIZE];
data/libtins-4.0/src/packet_sender.cpp:213:20:  [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).
            sock = open(oss.str().c_str(), O_RDWR);
data/libtins-4.0/src/pdu_option.cpp:42:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/pppoe.cpp:38:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/pppoe.cpp:158: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(&buffer[0], &tmp_vendor_id, sizeof(uint32_t));
data/libtins-4.0/src/radiotap.cpp:54:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/radiotap.cpp:68:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(buffer, &value, sizeof(value));
data/libtins-4.0/src/radiotap.cpp:147: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(buffer, &new_freq, sizeof(new_freq));
data/libtins-4.0/src/radiotap.cpp:148: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(buffer + sizeof(new_freq), &new_type, sizeof(new_type));
data/libtins-4.0/src/radiotap.cpp:187: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(buffer, &new_xchannel, sizeof(new_xchannel));
data/libtins-4.0/src/radiotap.cpp:193: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(buffer, &new_mcs, sizeof(new_mcs));
data/libtins-4.0/src/radiotap.cpp:260: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(&output, opt.data_ptr(), sizeof(uint16_t));
data/libtins-4.0/src/radiotap.cpp:267: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(&output, opt.data_ptr() + sizeof(uint16_t), sizeof(uint16_t));
data/libtins-4.0/src/sniffer.cpp:313: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 error[PCAP_ERRBUF_SIZE];
data/libtins-4.0/src/sniffer.cpp:396: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 error[PCAP_ERRBUF_SIZE];
data/libtins-4.0/src/sniffer.cpp:412: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 error[PCAP_ERRBUF_SIZE];
data/libtins-4.0/src/udp.cpp:95:9:  [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, ptr, sizeof(uint16_t));
data/libtins-4.0/src/utils/checksum_utils.cpp:37:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
using std::memcpy;
data/libtins-4.0/src/utils/checksum_utils.cpp:62:9:  [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, ptr, sizeof(uint16_t));
data/libtins-4.0/src/utils/radiotap_writer.cpp:69:13:  [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(const_cast<uint8_t*>(parser.current_option_ptr()),
data/libtins-4.0/src/utils/radiotap_writer.cpp:104: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(&*buffer_.begin(), &flags, sizeof(flags));
data/libtins-4.0/src/utils/routing_utils.cpp:182: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 iface_name[IF_NAMESIZE];
data/libtins-4.0/src/utils/routing_utils.cpp:212: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 iface_name[IF_NAMESIZE];
data/libtins-4.0/tests/src/radiotap_test.cpp:651:9:  [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, &value, sizeof(value));
data/libtins-4.0/tests/src/radiotap_test.cpp:657:9:  [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, &value, sizeof(value));
data/libtins-4.0/tests/src/radiotap_test.cpp:671:9:  [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, &value, sizeof(value));
data/libtins-4.0/include/tins/ipv6_address.h:139:21:  [1] (buffer) equal:
  Function does not check the second iterator for over-read conditions
  (CWE-126). This function is often discouraged by most C++ coding standards
  in favor of its safer alternatives provided since C++14. Consider using a
  form of this function that checks the second iterator before potentially
  overflowing it.
        return std::equal(begin(), end(), rhs.address_);
data/libtins-4.0/include/tins/memory_helpers.h:79:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    T read() {
data/libtins-4.0/include/tins/memory_helpers.h:81:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        read(output);
data/libtins-4.0/include/tins/memory_helpers.h:87:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        return Endian::le_to_host(read<T>());
data/libtins-4.0/include/tins/memory_helpers.h:92:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        return Endian::be_to_host(read<T>());
data/libtins-4.0/include/tins/memory_helpers.h:96:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(T& value) {
data/libtins-4.0/include/tins/memory_helpers.h:116:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(void* output_buffer, size_t output_buffer_size) {
data/libtins-4.0/include/tins/memory_helpers.h:140:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(std::vector<uint8_t>& value, size_t count);
data/libtins-4.0/include/tins/memory_helpers.h:141:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(HWAddress<6>& address);
data/libtins-4.0/include/tins/memory_helpers.h:142:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(IPv4Address& address);
data/libtins-4.0/include/tins/memory_helpers.h:143:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(IPv6Address& address);
data/libtins-4.0/src/arp.cpp:67:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/bootp.cpp:50:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(bootp_);
data/libtins-4.0/src/bootp.cpp:54:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(vend_, vend_field_size);
data/libtins-4.0/src/crypto.cpp:51: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/libtins-4.0/src/crypto.cpp:463:10:  [1] (buffer) equal:
  Function does not check the second iterator for over-read conditions
  (CWE-126). This function is often discouraged by most C++ coding standards
  in favor of its safer alternatives provided since C++14. Consider using a
  form of this function that checks the second iterator before potentially
  overflowing it.
    if (!equal(MIC, MIC + RSNEAPOL::mic_size, last_hs.mic())) {
data/libtins-4.0/src/crypto.cpp:546: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.
    if (equal(nice_MIC, nice_MIC + sizeof(nice_MIC), MIC)) {
data/libtins-4.0/src/dhcp.cpp:64:42:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    const uint32_t magic_number = stream.read<uint32_t>();
data/libtins-4.0/src/dhcp.cpp:72:43:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        option_type = (OptionTypes)stream.read<uint8_t>();
data/libtins-4.0/src/dhcp.cpp:75:36:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            option_length = stream.read<uint8_t>();
data/libtins-4.0/src/dhcpv6.cpp:37: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/libtins-4.0/src/dhcpv6.cpp:115:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(&header_data_, required_size);
data/libtins-4.0/src/dhcpv6.cpp:117:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(link_addr_);
data/libtins-4.0/src/dhcpv6.cpp:118:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(peer_addr_);
data/libtins-4.0/src/dhcpv6.cpp:202:16:  [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(header_data_ + 1, header_data_ + 4, ptr + 1);
data/libtins-4.0/src/dhcpv6.cpp:456:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.lladdress, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:477:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.identifier, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:497:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.lladdress, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:520:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.options, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:531:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.options, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:541:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.address);
data/libtins-4.0/src/dhcpv6.cpp:544:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.options, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:554:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.protocol = stream.read<uint8_t>();
data/libtins-4.0/src/dhcpv6.cpp:555:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.algorithm = stream.read<uint8_t>();
data/libtins-4.0/src/dhcpv6.cpp:556:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.rdm = stream.read<uint8_t>();
data/libtins-4.0/src/dhcpv6.cpp:558:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.auth_info, stream.size());
data/libtins-4.0/src/dhcpv6.cpp:580:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.data, stream.size());
data/libtins-4.0/src/dns.cpp:62:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/dns.cpp:63:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(records_data_, stream.size());
data/libtins-4.0/src/dns.cpp:83:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        uint8_t value = stream.read<uint8_t>();
data/libtins-4.0/src/dns.cpp:439:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                data = stream.read<IPv6Address>().to_string();
data/libtins-4.0/src/dns.cpp:442:42:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                inline_convert_v4(stream.read<uint32_t>(), small_addr_buf);
data/libtins-4.0/src/dot11/dot11_assoc.cpp:53:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_assoc.cpp:81:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_assoc.cpp:109:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_assoc.cpp:141:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_assoc.cpp:173:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_auth.cpp:53:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_auth.cpp:89:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_base.cpp:73:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/dot11/dot11_base.cpp:85:66:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            OptionTypes opcode = static_cast<OptionTypes>(stream.read<uint8_t>());
data/libtins-4.0/src/dot11/dot11_base.cpp:86:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            uint8_t length = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_beacon.cpp:53:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot11/dot11_control.cpp:65:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(taddr_);
data/libtins-4.0/src/dot11/dot11_control.cpp:156:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(bar_control_);
data/libtins-4.0/src/dot11/dot11_control.cpp:157:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(start_sequence_);
data/libtins-4.0/src/dot11/dot11_control.cpp:206:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(bar_control_);
data/libtins-4.0/src/dot11/dot11_control.cpp:207:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(start_sequence_);
data/libtins-4.0/src/dot11/dot11_control.cpp:208:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(bitmap_);
data/libtins-4.0/src/dot11/dot11_data.cpp:69:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(ext_header_);
data/libtins-4.0/src/dot11/dot11_data.cpp:71:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(addr4_);
data/libtins-4.0/src/dot11/dot11_data.cpp:138:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(qos_control_);
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:56:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(ext_header_);
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:58:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(addr4_);
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:509:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.hop_set = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:510:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.hop_pattern = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:511:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.hop_index = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:522:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.cfp_count = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:523:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.cfp_period = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:607:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.quiet_count = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:608:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.quiet_period = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_mgmt.cpp:622:41:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.channel_utilization = stream.read<uint8_t>();
data/libtins-4.0/src/dot11/dot11_probe.cpp:69:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(body_);
data/libtins-4.0/src/dot1q.cpp:56:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/dot3.cpp:48: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/libtins-4.0/src/dot3.cpp:72:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/eapol.cpp:63:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/eapol.cpp:122:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/eapol.cpp:124:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(key_, key_length());
data/libtins-4.0/src/eapol.cpp:183:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/eapol.cpp:185:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(key_, wpa_length());
data/libtins-4.0/src/ethernetII.cpp:76:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/hw_address.cpp:41: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/libtins-4.0/src/hw_address.cpp:108: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.
    return equal(start1, end1, start2);
data/libtins-4.0/src/icmp.cpp:64:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/icmp.cpp:66:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        original_timestamp(stream.read<uint32_t>());
data/libtins-4.0/src/icmp.cpp:67:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        receive_timestamp(stream.read<uint32_t>());
data/libtins-4.0/src/icmp.cpp:68:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        transmit_timestamp(stream.read<uint32_t>());
data/libtins-4.0/src/icmp.cpp:71:42:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        address_mask(address_type(stream.read<uint32_t>()));
data/libtins-4.0/src/icmp_extension.cpp:60:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    extension_class_ = stream.read<uint8_t>();
data/libtins-4.0/src/icmp_extension.cpp:61:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    extension_type_ = stream.read<uint8_t>();
data/libtins-4.0/src/icmp_extension.cpp:67:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(payload_, length);
data/libtins-4.0/src/icmp_extension.cpp:113:36:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    version_and_reserved_ = stream.read<uint16_t>();
data/libtins-4.0/src/icmp_extension.cpp:114:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    checksum_ = stream.read<uint16_t>();
data/libtins-4.0/src/icmp_extension.cpp:143:38:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    uint32_t actual_checksum = input.read<uint16_t>();
data/libtins-4.0/src/icmp_extension.cpp:144:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    uint16_t checksum = input.read<uint16_t>();
data/libtins-4.0/src/icmpv6.cpp:58:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/icmpv6.cpp:60:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        target_address_ = stream.read<ipaddress_type>();
data/libtins-4.0/src/icmpv6.cpp:63:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        dest_address_ = stream.read<ipaddress_type>();
data/libtins-4.0/src/icmpv6.cpp:66:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        reach_time_ = stream.read<uint32_t>();
data/libtins-4.0/src/icmpv6.cpp:67:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        retrans_timer_ = stream.read<uint32_t>();
data/libtins-4.0/src/icmpv6.cpp:79:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(multicast_address_);
data/libtins-4.0/src/icmpv6.cpp:83:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            stream.read(mlqm_);
data/libtins-4.0/src/icmpv6.cpp:87:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                stream.read(address);
data/libtins-4.0/src/icmpv6.cpp:105:41:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        const uint8_t opt_type = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:106:64:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        const uint32_t opt_size = static_cast<uint32_t>(stream.read<uint8_t>()) * 8;
data/libtins-4.0/src/icmpv6.cpp:837:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.reserved, 6);
data/libtins-4.0/src/icmpv6.cpp:839:43:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        output.addresses.push_back(stream.read<ICMPv6::ipaddress_type>());
data/libtins-4.0/src/icmpv6.cpp:867:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.prefix_len = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:869:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.A = (stream.read<uint8_t>() >> 6) & 0x1;
data/libtins-4.0/src/icmpv6.cpp:873:28:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.prefix = stream.read<ICMPv6::ipaddress_type>();
data/libtins-4.0/src/icmpv6.cpp:887:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.key_hash, sizeof(output.key_hash));
data/libtins-4.0/src/icmpv6.cpp:899:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.option_code = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:900:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.prefix_len = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:903:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.address);
data/libtins-4.0/src/icmpv6.cpp:914:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.pref = stream.read<uint8_t>() & 0x0f;
data/libtins-4.0/src/icmpv6.cpp:915:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.r = (stream.read<uint8_t>() >> 7) & 0x01;
data/libtins-4.0/src/icmpv6.cpp:917:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.address);
data/libtins-4.0/src/icmpv6.cpp:927:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.prefix_len = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:928:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.pref = (stream.read<uint8_t>() >> 3) & 0x3;
data/libtins-4.0/src/icmpv6.cpp:943:41:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        output.servers.push_back(stream.read<ICMPv6::ipaddress_type>());
data/libtins-4.0/src/icmpv6.cpp:955:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.AT = (stream.read<uint8_t>() >> 4) & 0x3;
data/libtins-4.0/src/icmpv6.cpp:971:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.AT = (stream.read<uint8_t>() >> 4) & 0x3;
data/libtins-4.0/src/icmpv6.cpp:1043:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.reserved, 6);
data/libtins-4.0/src/icmpv6.cpp:1054:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.limit = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:1055:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.reserved1 = stream.read<uint8_t>();
data/libtins-4.0/src/icmpv6.cpp:1076:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(type);
data/libtins-4.0/src/icmpv6.cpp:1077:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    int aux_data_len = stream.read<uint8_t>() * sizeof(uint32_t);
data/libtins-4.0/src/icmpv6.cpp:1078:51:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    int sources_count = Endian::be_to_host(stream.read<uint16_t>());
data/libtins-4.0/src/icmpv6.cpp:1079:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(multicast_address);
data/libtins-4.0/src/icmpv6.cpp:1081:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        sources.push_back(stream.read<ipaddress_type>());
data/libtins-4.0/src/ip.cpp:78:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/ip.cpp:89:64:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        option_identifier opt_type = (option_identifier)stream.read<uint8_t>();
data/libtins-4.0/src/ip.cpp:92:49:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            const uint32_t option_size = stream.read<uint8_t>();
data/libtins-4.0/src/ip.cpp:511:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    uint32_t tcc = stream.read<uint8_t>();
data/libtins-4.0/src/ip.cpp:512:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    tcc = (tcc << 8) | stream.read<uint8_t>();
data/libtins-4.0/src/ip.cpp:513:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    tcc = (tcc << 8) | stream.read<uint8_t>();
data/libtins-4.0/src/ipsec.cpp:51:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/ipsec.cpp:60:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(icv_, icv_length);
data/libtins-4.0/src/ipsec.cpp:116:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/ipv6.cpp:63:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        current_header = stream.read<uint8_t>();
data/libtins-4.0/src/ipv6.cpp:64:65:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        const uint32_t ext_size = (static_cast<uint32_t>(stream.read<uint8_t>()) + 1) * 8;
data/libtins-4.0/src/ipv6.cpp:81:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/ipv6.cpp:90:45:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            const uint8_t ext_type = stream.read<uint8_t>();
data/libtins-4.0/src/ipv6.cpp:93:69:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            const uint32_t ext_size = (static_cast<uint32_t>(stream.read<uint8_t>()) + 1) * 8;
data/libtins-4.0/src/ipv6.cpp:105:54:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                    const uint8_t opt_type = options.read<uint8_t>();
data/libtins-4.0/src/ipv6.cpp:109:54:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                    const uint8_t opt_size = options.read<uint8_t>();
data/libtins-4.0/src/llc.cpp:61:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/llc.cpp:68:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(control_field.unnumbered);
data/libtins-4.0/src/llc.cpp:74:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		stream.read(control_field.info);
data/libtins-4.0/src/loopback.cpp:67:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    family_ = stream.read<uint32_t>();
data/libtins-4.0/src/memory_helpers.cpp:42:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void InputMemoryStream::read(vector<uint8_t>& value, size_t count) {
data/libtins-4.0/src/memory_helpers.cpp:50:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void InputMemoryStream::read(HWAddress<6>& address) {
data/libtins-4.0/src/memory_helpers.cpp:58:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void InputMemoryStream::read(IPv4Address& address) {
data/libtins-4.0/src/memory_helpers.cpp:59:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    address = IPv4Address(read<uint32_t>());
data/libtins-4.0/src/memory_helpers.cpp:62:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void InputMemoryStream::read(IPv6Address& address) {
data/libtins-4.0/src/mpls.cpp:48:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/mpls.cpp:53:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/packet_sender.cpp:220:9:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
        strncpy(ifr.ifr_name, iface.name().c_str(), sizeof(ifr.ifr_name) - 1);
data/libtins-4.0/src/packet_sender.cpp:439:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    int read;
data/libtins-4.0/src/packet_sender.cpp:465:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read > 0) {
data/libtins-4.0/src/packet_sender.cpp:472:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                        size = ::read(*it, buffer, buffer_size_);
data/libtins-4.0/src/pdu_option.cpp:76:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        const T value = input.read<T>();
data/libtins-4.0/src/pdu_option.cpp:99:28:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        data.first = input.read<T>();
data/libtins-4.0/src/pdu_option.cpp:100:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        data.second = input.read<U>();
data/libtins-4.0/src/pdu_option.cpp:123:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.first = input.read<T>();
data/libtins-4.0/src/pdu_option.cpp:124:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    output.second = input.read<U>();
data/libtins-4.0/src/pdu_option.cpp:180:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    const uint32_t ip_int = input.read<uint32_t>();
data/libtins-4.0/src/pdu_option.cpp:236:39:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        const uint32_t ip_int = input.read<uint32_t>();
data/libtins-4.0/src/pktap.cpp:46:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/ppi.cpp:49:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/ppi.cpp:56:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(data_, options_length);
data/libtins-4.0/src/pppoe.cpp:55:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_); 
data/libtins-4.0/src/pppoe.cpp:69:62:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            TagTypes opt_type = static_cast<TagTypes>(stream.read<uint16_t>());
data/libtins-4.0/src/pppoe.cpp:238:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(output.data, stream.size());
data/libtins-4.0/src/radiotap.cpp:84:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    input.read(header_);
data/libtins-4.0/src/sll.cpp:47:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/snap.cpp:54:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(snap_);
data/libtins-4.0/src/stp.cpp:47:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/tcp.cpp:68:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/tcp.cpp:83:61:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        const OptionTypes option_type = (OptionTypes)stream.read<uint8_t>();
data/libtins-4.0/src/tcp.cpp:93:35:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            uint32_t len = stream.read<uint8_t>();
data/libtins-4.0/src/tcp_ip/flow.cpp:184:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    return stream.read<IPv4Address>();
data/libtins-4.0/src/tcp_ip/flow.cpp:189:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    return stream.read<IPv6Address>();
data/libtins-4.0/src/udp.cpp:60:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stream.read(header_);
data/libtins-4.0/src/utils/checksum_utils.cpp:89:34:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        checksum += input_stream.read<uint16_t>();
data/libtins-4.0/tests/src/address_range_test.cpp:85:26:  [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.
        EXPECT_TRUE(std::equal(addr.begin(), addr.end(), addresses.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:93:26:  [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.
        EXPECT_TRUE(std::equal(addr.begin(), addr.end(), addresses.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:103:26:  [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.
        EXPECT_TRUE(std::equal(addr.begin(), addr.end(), addresses.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:116:26:  [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.
        EXPECT_TRUE(std::equal(addr.begin(), addr.end(), addresses.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:126:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:127:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:134:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:135:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:144:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:145:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:156:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:157:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:168:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:169:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:178:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:179:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:188:26:  [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.
        EXPECT_TRUE(std::equal(range1.begin(), range1.end(), range2.begin()));
data/libtins-4.0/tests/src/address_range_test.cpp:189:26:  [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.
        EXPECT_TRUE(std::equal(range2.begin(), range2.end(), range1.begin()));
data/libtins-4.0/tests/src/dhcp_test.cpp:175:22:  [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.
    EXPECT_TRUE(std::equal(option->data_ptr(), option->data_ptr() + option->data_size(), value));
data/libtins-4.0/tests/src/dhcp_test.cpp:270:26:  [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.
        EXPECT_TRUE(std::equal(it1->data_ptr(), it1->data_ptr() + it1->data_size(), it2->data_ptr()));
data/libtins-4.0/tests/src/dhcp_test.cpp:302:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dns_test.cpp:171:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/ack_test.cpp:103:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/assoc_request_test.cpp:90:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/assoc_response_test.cpp:98:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/authentication_test.cpp:106:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/beacon_test.cpp:442:22:  [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.
    EXPECT_TRUE(std::equal(rates_parsed.begin(), rates_parsed.end(), rates));
data/libtins-4.0/tests/src/dot11/beacon_test.cpp:444:22:  [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.
    EXPECT_TRUE(std::equal(ext_rates_parsed.begin(), ext_rates_parsed.end(), ext_rates));
data/libtins-4.0/tests/src/dot11/beacon_test.cpp:458:22:  [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.
    EXPECT_TRUE(std::equal(serialized.begin(), serialized.end(), buffer));
data/libtins-4.0/tests/src/dot11/beacon_test.cpp:465:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/block_ack_request_test.cpp:94:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/cf_end_ack_test.cpp:78:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/cf_end_test.cpp:78:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/data_test.cpp:141:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/deauthentication_test.cpp:88:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/disassoc_test.cpp:89:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/dot11_test.cpp:165:22:  [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.
    EXPECT_TRUE(std::equal(hwaddr.begin(), hwaddr.end(), option->data_ptr()));
data/libtins-4.0/tests/src/dot11/dot11_test.cpp:172:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/probe_response_test.cpp:97:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/ps_poll_test.cpp:78:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/reassoc_request_test.cpp:97:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/reassoc_response_test.cpp:86:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/dot11/rts_test.cpp:78:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/ethernet_test.cpp:123:22:  [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.
    EXPECT_TRUE(std::equal(serialized.begin(), serialized.end(), smallip_packet));
data/libtins-4.0/tests/src/hw_address_test.cpp:26:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), empty_addr));
data/libtins-4.0/tests/src/hw_address_test.cpp:96:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), byte_address));
data/libtins-4.0/tests/src/hw_address_test.cpp:101:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), byte_address));
data/libtins-4.0/tests/src/icmpv6_test.cpp:404:22:  [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.
    EXPECT_TRUE(std::equal(data.key_hash, data.key_hash + sizeof(data.key_hash), result.key_hash));
data/libtins-4.0/tests/src/icmpv6_test.cpp:407:22:  [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.
    EXPECT_TRUE(std::equal(data.signature.begin(), data.signature.end(), result.signature.begin()));
data/libtins-4.0/tests/src/icmpv6_test.cpp:447:22:  [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.
    EXPECT_TRUE(std::equal(data.address.begin(), data.address.end(), output.address.begin()));
data/libtins-4.0/tests/src/icmpv6_test.cpp:483:22:  [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.
    EXPECT_TRUE(std::equal(data.prefix.begin(), data.prefix.end(), output.prefix.begin()));
data/libtins-4.0/tests/src/ipv6_address_test.cpp:20:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), empty_addr));
data/libtins-4.0/tests/src/ipv6_address_test.cpp:29:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), some_addr));
data/libtins-4.0/tests/src/ipv6_address_test.cpp:38:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), some_addr));
data/libtins-4.0/tests/src/ipv6_address_test.cpp:46:22:  [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.
    EXPECT_TRUE(std::equal(addr.begin(), addr.end(), some_addr));
data/libtins-4.0/tests/src/pdu_test.cpp:59:22:  [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.
    EXPECT_TRUE(std::equal(raw_payload.begin(), raw_payload.end(), raw->payload().begin()));
data/libtins-4.0/tests/src/pdu_test.cpp:71:22:  [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.
    EXPECT_TRUE(std::equal(raw->payload().begin(), raw->payload().end(), raw_payload.begin()));
data/libtins-4.0/tests/src/pdu_test.cpp:83:22:  [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.
    EXPECT_TRUE(std::equal(raw->payload().begin(), raw->payload().end(), raw_payload.begin()));
data/libtins-4.0/tests/src/radiotap_test.cpp:446:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/rc4_eapol_test.cpp:26:22:  [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.
    EXPECT_TRUE(std::equal(empty_iv, empty_iv + sizeof(empty_iv), eapol.key_iv()));
data/libtins-4.0/tests/src/rc4_eapol_test.cpp:29:22:  [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.
    EXPECT_TRUE(std::equal(empty_iv, empty_iv + sizeof(empty_iv), eapol.key_sign()));
data/libtins-4.0/tests/src/rc4_eapol_test.cpp:76:22:  [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.
    EXPECT_TRUE(std::equal(iv, iv + sizeof(iv), eapol.key_iv()));
data/libtins-4.0/tests/src/rc4_eapol_test.cpp:100:22:  [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.
    EXPECT_TRUE(std::equal(sign, sign + sizeof(sign), eapol.key_sign()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:88:22:  [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.
    EXPECT_TRUE(std::equal(eapol1.key_iv(), eapol1.key_iv() + RSNEAPOL::key_iv_size, eapol2.key_iv()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:89:22:  [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.
    EXPECT_TRUE(std::equal(eapol1.id(), eapol1.id() + RSNEAPOL::id_size, eapol2.id()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:90:22:  [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.
    EXPECT_TRUE(std::equal(eapol1.rsc(), eapol1.rsc() + RSNEAPOL::rsc_size, eapol2.rsc()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:92:22:  [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.
    EXPECT_TRUE(std::equal(eapol1.nonce(), eapol1.nonce() + RSNEAPOL::nonce_size, eapol2.nonce()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:93:22:  [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.
    EXPECT_TRUE(std::equal(eapol1.mic(), eapol1.mic() + RSNEAPOL::mic_size, eapol2.mic()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:108:22:  [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.
    EXPECT_TRUE(std::equal(empty_iv, empty_iv + sizeof(empty_iv), eapol.key_iv()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:109:22:  [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.
    EXPECT_TRUE(std::equal(empty_rsc, empty_rsc + sizeof(empty_rsc), eapol.id()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:110:22:  [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.
    EXPECT_TRUE(std::equal(empty_rsc, empty_rsc + sizeof(empty_rsc), eapol.rsc()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:112:22:  [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.
    EXPECT_TRUE(std::equal(empty_nonce, empty_nonce + sizeof(empty_nonce), eapol.nonce()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:113:22:  [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.
    EXPECT_TRUE(std::equal(empty_iv, empty_iv + sizeof(empty_iv), eapol.mic()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:141:22:  [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.
    EXPECT_TRUE(std::equal(nonce, nonce + sizeof(nonce), eapol.nonce()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:142:22:  [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.
    EXPECT_TRUE(std::equal(empty_iv, empty_iv + sizeof(empty_iv), eapol.key_iv()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:143:22:  [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.
    EXPECT_TRUE(std::equal(rsc, rsc + sizeof(rsc), eapol.rsc()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:144:22:  [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.
    EXPECT_TRUE(std::equal(id, id + sizeof(id), eapol.id()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:145:22:  [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.
    EXPECT_TRUE(std::equal(mic, mic + sizeof(mic), eapol.mic()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:149:22:  [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.
    EXPECT_TRUE(std::equal(key, key + sizeof(key), key_found.begin()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:156:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:200:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:218:22:  [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.
    EXPECT_TRUE(std::equal(empty_iv, empty_iv + sizeof(empty_iv), eapol.key_iv()));
data/libtins-4.0/tests/src/rsn_eapol_test.cpp:224:22:  [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.
    EXPECT_TRUE(std::equal(nonce, nonce + sizeof(nonce), eapol.nonce()));
data/libtins-4.0/tests/src/sll_test.cpp:59:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
data/libtins-4.0/tests/src/tcp_stream_test.cpp:133:22:  [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.
    EXPECT_TRUE(std::equal(payload.begin(), payload.end(), session.client_payload().begin())) << "Payload differs for index " << index;
data/libtins-4.0/tests/src/tcp_test.cpp:254:22:  [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.
    EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));

ANALYSIS SUMMARY:

Hits = 344
Lines analyzed = 60461 in approximately 1.73 seconds (35047 lines/second)
Physical Source Lines of Code (SLOC) = 34144
Hits@level = [0]   1 [1] 272 [2]  72 [3]   0 [4]   0 [5]   0
Hits@level+ = [0+] 345 [1+] 344 [2+]  72 [3+]   0 [4+]   0 [5+]   0
Hits/KSLOC@level+ = [0+] 10.1043 [1+] 10.075 [2+] 2.10872 [3+]   0 [4+]   0 [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.