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/camp-0.8.4/doc/api/mainpage.hpp Examining data/camp-0.8.4/include/camp-xml/common.hpp Examining data/camp-0.8.4/include/camp-xml/libxml.hpp Examining data/camp-0.8.4/include/camp-xml/qtxml.hpp Examining data/camp-0.8.4/include/camp-xml/rapidxml.hpp Examining data/camp-0.8.4/include/camp-xml/tinyxml.hpp Examining data/camp-0.8.4/include/camp-xml/xerces.hpp Examining data/camp-0.8.4/include/camp/args.hpp Examining data/camp-0.8.4/include/camp/arraymapper.hpp Examining data/camp-0.8.4/include/camp/arrayproperty.hpp Examining data/camp-0.8.4/include/camp/camptype.hpp Examining data/camp-0.8.4/include/camp/class.hpp Examining data/camp-0.8.4/include/camp/classbuilder.hpp Examining data/camp-0.8.4/include/camp/classcast.hpp Examining data/camp-0.8.4/include/camp/classget.hpp Examining data/camp-0.8.4/include/camp/classvisitor.hpp Examining data/camp-0.8.4/include/camp/config.hpp Examining data/camp-0.8.4/include/camp/constructor.hpp Examining data/camp-0.8.4/include/camp/detail/arraypropertyimpl.hpp Examining data/camp-0.8.4/include/camp/detail/callhelper.hpp Examining data/camp-0.8.4/include/camp/detail/classmanager.hpp Examining data/camp-0.8.4/include/camp/detail/constructorimpl.hpp Examining data/camp-0.8.4/include/camp/detail/enummanager.hpp Examining data/camp-0.8.4/include/camp/detail/enumpropertyimpl.hpp Examining data/camp-0.8.4/include/camp/detail/functionimpl.hpp Examining data/camp-0.8.4/include/camp/detail/functiontraits.hpp Examining data/camp-0.8.4/include/camp/detail/getter.hpp Examining data/camp-0.8.4/include/camp/detail/issmartpointer.hpp Examining data/camp-0.8.4/include/camp/detail/objectholder.hpp Examining data/camp-0.8.4/include/camp/detail/objecttraits.hpp Examining data/camp-0.8.4/include/camp/detail/observernotifier.hpp Examining data/camp-0.8.4/include/camp/detail/propertyfactory.hpp Examining data/camp-0.8.4/include/camp/detail/rawtype.hpp Examining data/camp-0.8.4/include/camp/detail/returntype.hpp Examining data/camp-0.8.4/include/camp/detail/simplepropertyimpl.hpp Examining data/camp-0.8.4/include/camp/detail/typeid.hpp Examining data/camp-0.8.4/include/camp/detail/userpropertyimpl.hpp Examining data/camp-0.8.4/include/camp/detail/valueimpl.hpp Examining data/camp-0.8.4/include/camp/detail/valueprovider.hpp Examining data/camp-0.8.4/include/camp/detail/yesnotype.hpp Examining data/camp-0.8.4/include/camp/enum.hpp Examining data/camp-0.8.4/include/camp/enumbuilder.hpp Examining data/camp-0.8.4/include/camp/enumget.hpp Examining data/camp-0.8.4/include/camp/enumobject.hpp Examining data/camp-0.8.4/include/camp/enumproperty.hpp Examining data/camp-0.8.4/include/camp/error.hpp Examining data/camp-0.8.4/include/camp/errors.hpp Examining data/camp-0.8.4/include/camp/function.hpp Examining data/camp-0.8.4/include/camp/observer.hpp Examining data/camp-0.8.4/include/camp/property.hpp Examining data/camp-0.8.4/include/camp/qt/qlist.hpp Examining data/camp-0.8.4/include/camp/qt/qstring.hpp Examining data/camp-0.8.4/include/camp/qt/qt.hpp Examining data/camp-0.8.4/include/camp/qt/qtfunction.hpp Examining data/camp-0.8.4/include/camp/qt/qthelper.hpp Examining data/camp-0.8.4/include/camp/qt/qtmapper.hpp Examining data/camp-0.8.4/include/camp/qt/qtsimpleproperty.hpp Examining data/camp-0.8.4/include/camp/qt/qvector.hpp Examining data/camp-0.8.4/include/camp/simpleproperty.hpp Examining data/camp-0.8.4/include/camp/tagholder.hpp Examining data/camp-0.8.4/include/camp/type.hpp Examining data/camp-0.8.4/include/camp/userobject.hpp Examining data/camp-0.8.4/include/camp/userproperty.hpp Examining data/camp-0.8.4/include/camp/value.hpp Examining data/camp-0.8.4/include/camp/valuemapper.hpp Examining data/camp-0.8.4/include/camp/valuevisitor.hpp Examining data/camp-0.8.4/src/args.cpp Examining data/camp-0.8.4/src/arrayproperty.cpp Examining data/camp-0.8.4/src/camptype.cpp Examining data/camp-0.8.4/src/class.cpp Examining data/camp-0.8.4/src/classcast.cpp Examining data/camp-0.8.4/src/classmanager.cpp Examining data/camp-0.8.4/src/classvisitor.cpp Examining data/camp-0.8.4/src/enum.cpp Examining data/camp-0.8.4/src/enumbuilder.cpp Examining data/camp-0.8.4/src/enummanager.cpp Examining data/camp-0.8.4/src/enumobject.cpp Examining data/camp-0.8.4/src/enumproperty.cpp Examining data/camp-0.8.4/src/error.cpp Examining data/camp-0.8.4/src/errors.cpp Examining data/camp-0.8.4/src/function.cpp Examining data/camp-0.8.4/src/observer.cpp Examining data/camp-0.8.4/src/observernotifier.cpp Examining data/camp-0.8.4/src/outofrange.cpp Examining data/camp-0.8.4/src/property.cpp Examining data/camp-0.8.4/src/simpleproperty.cpp Examining data/camp-0.8.4/src/tagholder.cpp Examining data/camp-0.8.4/src/userobject.cpp Examining data/camp-0.8.4/src/userproperty.cpp Examining data/camp-0.8.4/src/value.cpp Examining data/camp-0.8.4/test/arrayproperty.cpp Examining data/camp-0.8.4/test/arrayproperty.hpp Examining data/camp-0.8.4/test/class.cpp Examining data/camp-0.8.4/test/class.hpp Examining data/camp-0.8.4/test/classvisitor.cpp Examining data/camp-0.8.4/test/classvisitor.hpp Examining data/camp-0.8.4/test/constructor.cpp Examining data/camp-0.8.4/test/constructor.hpp Examining data/camp-0.8.4/test/enum.cpp Examining data/camp-0.8.4/test/enum.hpp Examining data/camp-0.8.4/test/enumobject.cpp Examining data/camp-0.8.4/test/enumobject.hpp Examining data/camp-0.8.4/test/enumproperty.cpp Examining data/camp-0.8.4/test/enumproperty.hpp Examining data/camp-0.8.4/test/function.cpp Examining data/camp-0.8.4/test/function.hpp Examining data/camp-0.8.4/test/functionaccess.cpp Examining data/camp-0.8.4/test/functionaccess.hpp Examining data/camp-0.8.4/test/inheritance.cpp Examining data/camp-0.8.4/test/inheritance.hpp Examining data/camp-0.8.4/test/main.cpp Examining data/camp-0.8.4/test/mapper.cpp Examining data/camp-0.8.4/test/mapper.hpp Examining data/camp-0.8.4/test/property.cpp Examining data/camp-0.8.4/test/property.hpp Examining data/camp-0.8.4/test/propertyaccess.cpp Examining data/camp-0.8.4/test/propertyaccess.hpp Examining data/camp-0.8.4/test/qt/functionmapping.cpp Examining data/camp-0.8.4/test/qt/functionmapping.hpp Examining data/camp-0.8.4/test/qt/logger.hpp Examining data/camp-0.8.4/test/qt/main.cpp Examining data/camp-0.8.4/test/qt/propertymapping.cpp Examining data/camp-0.8.4/test/qt/propertymapping.hpp Examining data/camp-0.8.4/test/qt/qstringmapping.cpp Examining data/camp-0.8.4/test/tagholder.cpp Examining data/camp-0.8.4/test/tagholder.hpp Examining data/camp-0.8.4/test/userobject.cpp Examining data/camp-0.8.4/test/userobject.hpp Examining data/camp-0.8.4/test/userproperty.cpp Examining data/camp-0.8.4/test/userproperty.hpp Examining data/camp-0.8.4/test/value.cpp Examining data/camp-0.8.4/test/value.hpp FINAL RESULTS: data/camp-0.8.4/include/camp-xml/xerces.hpp:105: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/camp-0.8.4/include/camp/detail/yesnotype.hpp:53:16: [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. struct TypeNo {char padding[8];}; data/camp-0.8.4/include/camp/valuemapper.hpp:267:33: [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 std::string to(const char source[N]) {return std::string(source);} data/camp-0.8.4/include/camp/valuemapper.hpp:273:33: [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 std::string to(const char source[N]) {return std::string(source);} data/camp-0.8.4/test/function.hpp:62: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 padding[10]; data/camp-0.8.4/test/userobject.hpp:43: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 padding[15]; data/camp-0.8.4/include/camp/qt/qtsimpleproperty.hpp:79:56: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return QtHelper::variantToValue(m_metaProperty.read(object.get<T*>())); data/camp-0.8.4/test/enumobject.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. BOOST_AUTO_TEST_CASE(equal) data/camp-0.8.4/test/value.cpp:389: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. BOOST_AUTO_TEST_CASE(equal) ANALYSIS SUMMARY: Hits = 9 Lines analyzed = 19191 in approximately 0.62 seconds (31162 lines/second) Physical Source Lines of Code (SLOC) = 8154 Hits@level = [0] 0 [1] 3 [2] 6 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 9 [1+] 9 [2+] 6 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 1.10375 [1+] 1.10375 [2+] 0.735835 [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.