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/libphonenumber-7.1.0/cpp/src/phonenumbers/alternate_format.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/alternate_format.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/asyoutypeformatter.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/asyoutypeformatter.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/basictypes.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/logging.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/memory/scoped_ptr.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/memory/singleton.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/memory/singleton_posix.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/strings/string_piece.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/strings/string_piece.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/synchronization/lock.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/synchronization/lock_posix.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/template_util.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/thread_checker.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/callback.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/default_logger.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/default_logger.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/encoding_utils.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/area_code_map.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/area_code_map.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/default_map_storage.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/default_map_storage.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/geocoding_data.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/mapping_file_provider.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/mapping_file_provider.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/lite_metadata.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/logger.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/logger.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/matcher_api.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/metadata.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/metadata.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/normalize_utf8.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumber.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumber.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatch.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatch.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regex_based_matcher.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regex_based_matcher.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_adapter.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_adapter_icu.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_adapter_icu.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_adapter_re2.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_adapter_re2.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_cache.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_cache.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/regexp_factory.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/region_code.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/short_metadata.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/short_metadata.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/shortnumberinfo.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/shortnumberinfo.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/stl_util.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/string_byte_sink.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/string_byte_sink.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/test_metadata.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/unicodestring.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/unicodestring.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/rune.c Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/stringpiece.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/stringprintf.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unicodetext.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unicodetext.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unilib.cc Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unilib.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/utf.h Examining data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/utfdef.h Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/asyoutypeformatter_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/geocoding/area_code_map_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/geocoding/geocoding_data_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/geocoding/geocoding_test_data.h Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/geocoding/geocoding_test_program.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/geocoding/mapping_file_provider_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/geocoding/phonenumber_offline_geocoder_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/logger_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatch_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumberutil_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/regexp_adapter_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/regexp_cache_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/run_tests.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/shortnumberinfo_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/test_util.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/test_util.h Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/unicodestring_test.cc Examining data/libphonenumber-7.1.0/cpp/test/phonenumbers/utf/unicodetext_test.cc Examining data/libphonenumber-7.1.0/tools/cpp/src/base/basictypes.h Examining data/libphonenumber-7.1.0/tools/cpp/src/cpp-build/generate_geocoding_data.h Examining data/libphonenumber-7.1.0/tools/cpp/src/cpp-build/generate_geocoding_data_main.cc Examining data/libphonenumber-7.1.0/tools/cpp/src/cpp-build/generate_geocoding_data.cc Examining data/libphonenumber-7.1.0/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc Examining data/libphonenumber-7.1.0/tools/cpp/test/cpp-build/run_tests.cc FINAL RESULTS: data/libphonenumber-7.1.0/cpp/src/phonenumbers/asyoutypeformatter.cc:110:17: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). new_pattern = StrCat("(", new_pattern, ")"); data/libphonenumber-7.1.0/cpp/src/phonenumbers/asyoutypeformatter.cc:559:9: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat(prefix_before_national_number_, national_number)); data/libphonenumber-7.1.0/cpp/src/phonenumbers/asyoutypeformatter.cc:664:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("\\", string(&kPlusSign, 1), "|", data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatch.cc:74:10: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). return StrCat("PhoneNumberMatch [", start(), ",", end(), ") ", data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:72:10: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). return StrCat("{", lower, ",", upper, "}"); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:272:21: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). non_parens_(StrCat("[^", opening_parens_, closing_parens_, "]")), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:274:40: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). leading_maybe_matched_bracket_(StrCat( data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:277:24: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). bracket_pairs_(StrCat( data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:285:22: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). punctuation_(StrCat("[", PhoneNumberUtil::kValidPunctuation, "]", data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:287:25: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). digit_sequence_(StrCat("\\p{Nd}", Limit(1, digit_block_limit_))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:288:27: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). lead_class_chars_(StrCat(opening_parens_, PhoneNumberUtil::kPlusChars)), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:289:21: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). lead_class_(StrCat("[", lead_class_chars_, "]")), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:290:30: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). opening_punctuation_(StrCat("(?:", lead_class_, punctuation_, ")")), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:291:32: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). optional_extn_pattern_(StrCat( data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:310:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat(leading_maybe_matched_bracket_, non_parens_, "+", data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumbermatcher.cc:320:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("(", opening_punctuation_, lead_limit_, data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:162:35: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). formatted_number->insert(0, StrCat(kPlusSign, country_calling_code)); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:165:35: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). formatted_number->insert(0, StrCat(kPlusSign, country_calling_code, " ")); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:168:35: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). formatted_number->insert(0, StrCat(kRfc3966Prefix, kPlusSign, data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:205:47: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). static const string capturing_extn_digits = StrCat("([", kDigits, "]{1,7})"); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:217:11: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). return (StrCat( data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:513:36: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). : punctuation_and_star_sign_(StrCat(PhoneNumberUtil::kValidPunctuation, data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:516:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat(kDigits, "{", PhoneNumberUtil::kMinLengthForNsn, "}")), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:518:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat(min_length_phone_number_pattern_, "|[", data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:525:31: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). CreateExtnPattern(StrCat(",", kSingleExtnSymbolsForMatching))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:537:43: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). regexp_factory_->CreateRegExp(StrCat("[", kDigits, "]*"))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:539:43: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). regexp_factory_->CreateRegExp(StrCat("([", kDigits, "])"))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:543:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("[", PhoneNumberUtil::kPlusChars, kDigits, "]"))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:551:17: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("[", PhoneNumberUtil::kValidPunctuation, "]+"))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:555:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("(?i)(?:", extn_patterns_for_parsing_, ")$"))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:557:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("(?i)", valid_phone_number_, data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:560:13: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}"))), data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:571:17: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("[", PhoneNumberUtil::kPlusChars, "]+"))) { data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:720:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("[", kValidPunctuation, "]*", "(\\$\\d", "[", data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1003:11: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat(hu_national_prefix, " ", *formatted_number)); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1082:35: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). formatted_number->insert(0, StrCat(country_code, " ")); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1126:12: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). 0, StrCat(international_prefix_for_formatting, " ", country_code, " ")); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1683:33: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). ErrorType success = Parse(StrCat(kPlusSign, data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1987:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("(", metadata->general_desc().possible_number_pattern(), ")")); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:2259:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("[^", kDigits, "]")); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:2607:15: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("(", general_num_desc.possible_number_pattern(), ")")); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:2773:43: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). reg_exps_->regexp_cache_->GetRegExp(StrCat("(", data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:218:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2) { data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:228:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:240:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:253:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:268:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:284:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:302:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:321:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:343:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:368:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:113:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2); data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:115:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:118:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:121:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:125:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:129:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:134:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:139:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:145:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.h:152:8: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string StrCat(const StringHolder& s1, const StringHolder& s2, data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:61:12: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). return StrCat(raw_string_, " (", region_, ")"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:194:23: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string text = StrCat(it->leading_text_, number, it->trailing_text_); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:204:23: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string text = StrCat(it->leading_text_, number, it->trailing_text_); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:288:21: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string text = StrCat(prefix, number, it->trailing_text_); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:561:17: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string text = StrCat(number1, " - ", number2, " - ", number3, " - ", number4); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:586:17: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). string text = StrCat(number1, " ", number2); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:603:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("My address is CA 34215 - ", number, " is my number."); data/libphonenumber-7.1.0/cpp/test/phonenumbers/phonenumbermatcher_test.cc:621:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). StrCat("My number is ", number, ". 34215 is my zip-code."); data/libphonenumber-7.1.0/cpp/test/phonenumbers/regexp_adapter_test.cc:78:12: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). return StrCat("Test failed with ", context.name, " implementation."); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:236:22: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). TEST(StringUtilTest, StrCat) { data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:240:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:244:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:248:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:252:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d", "e"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:256:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d", "e", "f"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:260:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d", "e", "f", "g"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:264:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d", "e", "f", "g", "h"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:268:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d", "e", "f", "g", "h", "i"); data/libphonenumber-7.1.0/cpp/test/phonenumbers/stringutil_test.cc:272:7: [4] (buffer) StrCat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). s = StrCat("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"); data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/strings/string_piece.cc:39:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(buf, ptr_ + pos, ret); data/libphonenumber-7.1.0/cpp/src/phonenumbers/normalize_utf8.h:38: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 utf8[4]; data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:248:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char unicode_char[5]; data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:696:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char current_char[5]; data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1920:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char current_char[5]; data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/rune.c:316:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char str[10]; data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unicodetext.cc:118: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(new_data, data_, size_); data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unicodetext.cc:149:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(data_, data, size); data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unicodetext.cc:171:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(data_ + size_, bytes, byte_length); data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unicodetext.cc:364: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 buf[UTFmax]; data/libphonenumber-7.1.0/cpp/src/phonenumbers/utf/unilib.h:49:23: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. static const unsigned char kUTF8LenTbl[256] = { data/libphonenumber-7.1.0/tools/cpp/src/cpp-build/generate_geocoding_data.cc:161:17: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE* input = fopen(path.c_str(), "r"); data/libphonenumber-7.1.0/tools/cpp/src/cpp-build/generate_geocoding_data.cc:641:21: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE* source_fp = fopen(source_path.c_str(), "w"); data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/strings/string_piece.h:51:46: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). : ptr_(str), length_((str == NULL) ? 0 : strlen(str)) { } data/libphonenumber-7.1.0/cpp/src/phonenumbers/base/strings/string_piece.h:76:21: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). length_ = str ? strlen(str) : 0; data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1741:34: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). index_of_phone_context + strlen(kRfc3966PhoneContext); data/libphonenumber-7.1.0/cpp/src/phonenumbers/phonenumberutil.cc:1765:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). index_of_rfc_prefix + strlen(kRfc3966Prefix) : 0; data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:27: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/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:65:7: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. equal(s.begin(), s.begin() + prefix.size(), prefix.begin()); data/libphonenumber-7.1.0/cpp/src/phonenumbers/stringutil.cc:191:15: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). len_(std::strlen(s)) data/libphonenumber-7.1.0/cpp/src/phonenumbers/unicodestring.cc:24: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/libphonenumber-7.1.0/cpp/src/phonenumbers/unicodestring.cc:38: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. return equal(text_.begin(), text_.end(), rhs.text_.begin()); data/libphonenumber-7.1.0/cpp/src/phonenumbers/unicodestring.h:37:44: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). : text_(UTF8ToUnicodeText(utf8, std::strlen(utf8))), data/libphonenumber-7.1.0/tools/cpp/src/cpp-build/generate_geocoding_data.cc:129:15: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. return std::equal(suffix.rbegin(), suffix.rend(), s.rbegin()); ANALYSIS SUMMARY: Hits = 105 Lines analyzed = 52800 in approximately 4.62 seconds (11440 lines/second) Physical Source Lines of Code (SLOC) = 44471 Hits@level = [0] 55 [1] 11 [2] 13 [3] 0 [4] 81 [5] 0 Hits@level+ = [0+] 160 [1+] 105 [2+] 94 [3+] 81 [4+] 81 [5+] 0 Hits/KSLOC@level+ = [0+] 3.59785 [1+] 2.36109 [2+] 2.11374 [3+] 1.82141 [4+] 1.82141 [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.