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/libcmis-0.5.2/inc/libcmis/libcmis-api.h Examining data/libcmis-0.5.2/inc/libcmis-c/object.h Examining data/libcmis-0.5.2/inc/libcmis-c/oauth2-data.h Examining data/libcmis-0.5.2/inc/libcmis-c/error.h Examining data/libcmis-0.5.2/inc/libcmis-c/property.h Examining data/libcmis-0.5.2/inc/libcmis-c/allowable-actions.h Examining data/libcmis-0.5.2/inc/libcmis-c/vectors.h Examining data/libcmis-0.5.2/inc/libcmis-c/object-type.h Examining data/libcmis-0.5.2/inc/libcmis-c/session.h Examining data/libcmis-0.5.2/inc/libcmis-c/session-factory.h Examining data/libcmis-0.5.2/inc/libcmis-c/types.h Examining data/libcmis-0.5.2/inc/libcmis-c/rendition.h Examining data/libcmis-0.5.2/inc/libcmis-c/libcmis-c.h Examining data/libcmis-0.5.2/inc/libcmis-c/document.h Examining data/libcmis-0.5.2/inc/libcmis-c/property-type.h Examining data/libcmis-0.5.2/inc/libcmis-c/libcmis-c-api.h Examining data/libcmis-0.5.2/inc/libcmis-c/folder.h Examining data/libcmis-0.5.2/inc/libcmis-c/repository.h Examining data/libcmis-0.5.2/src/libcmis/oauth2-providers.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-session.cxx Examining data/libcmis-0.5.2/src/libcmis/dummy.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-session.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-object.cxx Examining data/libcmis-0.5.2/src/libcmis/atom-object-type.cxx Examining data/libcmis-0.5.2/src/libcmis/property-type.cxx Examining data/libcmis-0.5.2/src/libcmis/folder.cxx Examining data/libcmis-0.5.2/src/libcmis/allowable-actions.cxx Examining data/libcmis-0.5.2/src/libcmis/atom-object.cxx Examining data/libcmis-0.5.2/src/libcmis/property.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-session.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-document.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-object-type.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-objectservice.cxx Examining data/libcmis-0.5.2/src/libcmis/oauth2-handler.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-object.cxx Examining data/libcmis-0.5.2/src/libcmis/oauth2-data.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-navigationservice.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-property.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-repository.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-property.cxx Examining data/libcmis-0.5.2/src/libcmis/json-utils.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-versioningservice.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-requests.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-soap.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-document.cxx Examining data/libcmis-0.5.2/src/libcmis/atom-folder.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-utils.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-object.cxx Examining data/libcmis-0.5.2/src/libcmis/atom-session.cxx Examining data/libcmis-0.5.2/src/libcmis/session-factory.cxx Examining data/libcmis-0.5.2/src/libcmis/base-session.cxx Examining data/libcmis-0.5.2/src/libcmis/http-session.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-object-type.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-repository.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-relatedmultipart.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-repository.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-object.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-utils.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-document.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-folder.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-object-type.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-object-type.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-utils.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-folder.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-folder.cxx Examining data/libcmis-0.5.2/src/libcmis/xml-utils.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-folder.cxx Examining data/libcmis-0.5.2/src/libcmis/repository.cxx Examining data/libcmis-0.5.2/src/libcmis/onedrive-session.cxx Examining data/libcmis-0.5.2/src/libcmis/object.cxx Examining data/libcmis-0.5.2/src/libcmis/atom-document.cxx Examining data/libcmis-0.5.2/src/libcmis/rendition.cxx Examining data/libcmis-0.5.2/src/libcmis/object-type.cxx Examining data/libcmis-0.5.2/src/libcmis/document.cxx Examining data/libcmis-0.5.2/src/libcmis/sharepoint-property.cxx Examining data/libcmis-0.5.2/src/libcmis/gdrive-document.cxx Examining data/libcmis-0.5.2/src/libcmis/ws-repositoryservice.cxx Examining data/libcmis-0.5.2/src/libcmis/atom-workspace.cxx Examining data/libcmis-0.5.2/src/libcmis-c/property-type.cxx Examining data/libcmis-0.5.2/src/libcmis-c/folder.cxx Examining data/libcmis-0.5.2/src/libcmis-c/allowable-actions.cxx Examining data/libcmis-0.5.2/src/libcmis-c/property.cxx Examining data/libcmis-0.5.2/src/libcmis-c/oauth2-data.cxx Examining data/libcmis-0.5.2/src/libcmis-c/session.cxx Examining data/libcmis-0.5.2/src/libcmis-c/session-factory.cxx Examining data/libcmis-0.5.2/src/libcmis-c/vectors.cxx Examining data/libcmis-0.5.2/src/libcmis-c/repository.cxx Examining data/libcmis-0.5.2/src/libcmis-c/object.cxx Examining data/libcmis-0.5.2/src/libcmis-c/error.cxx Examining data/libcmis-0.5.2/src/libcmis-c/rendition.cxx Examining data/libcmis-0.5.2/src/libcmis-c/object-type.cxx Examining data/libcmis-0.5.2/src/libcmis-c/document.cxx Examining data/libcmis-0.5.2/src/cmis-client.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-xmlutils.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-ws.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-soap.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-mockup-helpers.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-onedrive.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-main.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-decoder.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-commons.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-sharepoint.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-gdrive.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-jsonutils.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-atom.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-factory.cxx Examining data/libcmis-0.5.2/qa/libcmis/test-helpers.cxx Examining data/libcmis-0.5.2/qa/mockup/mockup-config.cxx Examining data/libcmis-0.5.2/qa/mockup/curl-mockup.cxx Examining data/libcmis-0.5.2/qa/mockup/curl/curl.h Examining data/libcmis-0.5.2/qa/mockup/mockup-config.h Examining data/libcmis-0.5.2/qa/libcmis-c/test-build.c Examining data/libcmis-0.5.2/qa/libcmis-c/test-object.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-property.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-object-type.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-dummies.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-session.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-allowable-actions.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-folder.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-repository.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-api.cxx Examining data/libcmis-0.5.2/qa/libcmis-c/test-property-type.cxx FINAL RESULTS: data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:255:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:278:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:299:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:323:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:353:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:475:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-document.cxx:533:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-folder.cxx:306:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis-c/test-folder.cxx:358:17: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). FILE* tmp = tmpfile( ); data/libcmis-0.5.2/qa/libcmis/test-decoder.cxx:110:14: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). stream = tmpfile(); data/libcmis-0.5.2/qa/libcmis/test-decoder.cxx:126: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[100]; data/libcmis-0.5.2/qa/libcmis/test-xmlutils.cxx:189: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 toParse[50]; data/libcmis-0.5.2/qa/libcmis/test-xmlutils.cxx:208: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 toParse[50]; data/libcmis-0.5.2/qa/libcmis/test-xmlutils.cxx:221: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 toParse[50]; data/libcmis-0.5.2/qa/libcmis/test-xmlutils.cxx:234: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 toParse[50]; data/libcmis-0.5.2/qa/libcmis/test-xmlutils.cxx:247: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 toParse[50]; data/libcmis-0.5.2/qa/mockup/mockup-config.cxx:178:28: [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* fd = fopen( response.c_str( ), "r" ); data/libcmis-0.5.2/src/libcmis-c/session-factory.cxx:78: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 user[CRED_MAX_LEN]; data/libcmis-0.5.2/src/libcmis-c/session-factory.cxx:81: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 pass[CRED_MAX_LEN]; data/libcmis-0.5.2/src/libcmis/http-session.cxx:592: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 errBuff[CURL_ERROR_SIZE]; data/libcmis-0.5.2/src/libcmis/oauth2-providers.cxx:67:26: [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 char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', data/libcmis-0.5.2/src/libcmis/sharepoint-session.cxx:252: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 errBuff[CURL_ERROR_SIZE]; data/libcmis-0.5.2/src/libcmis/xml-utils.cxx:184:17: [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 decoded[3]; data/libcmis-0.5.2/src/libcmis/xml-utils.cxx:198:17: [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 encoded[4]; data/libcmis-0.5.2/src/libcmis/xml-utils.cxx:241:17: [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 decoded[3]; data/libcmis-0.5.2/src/libcmis/xml-utils.cxx:276:17: [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 encoded[4]; data/libcmis-0.5.2/qa/libcmis-c/test-dummies.cxx:561:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read( buf, bufSize ); data/libcmis-0.5.2/qa/libcmis-c/test-dummies.cxx:563:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). out.write( buf, read ); data/libcmis-0.5.2/qa/libcmis/test-helpers.cxx:181:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). in.read( buffer, length ); data/libcmis-0.5.2/qa/libcmis/test-jsonutils.cxx:84:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). in.read( &contents[0], contents.size( ) ); data/libcmis-0.5.2/qa/libcmis/test-ws.cxx:67:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is->read( buf, size ); data/libcmis-0.5.2/qa/mockup/curl-mockup.cxx:338:30: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). body.write( buf, read ); data/libcmis-0.5.2/qa/mockup/mockup-config.cxx:194:58: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). written = handle->m_writeFn( buf, 1, read, handle->m_writeData ); data/libcmis-0.5.2/qa/mockup/mockup-config.cxx:195:57: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). } while ( read == bufSize && written == read ); data/libcmis-0.5.2/src/libcmis-c/document.cxx:155:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). stream->read( buf, bufSize ); data/libcmis-0.5.2/src/libcmis-c/document.cxx:157:64: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). writeFn( ( const void * )buf, size_t( 1 ), read, userData ); data/libcmis-0.5.2/src/libcmis-c/document.cxx:211:37: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). stream->write( buf, read ); data/libcmis-0.5.2/src/libcmis-c/document.cxx:366:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). stream->write( buf, read ); data/libcmis-0.5.2/src/libcmis-c/folder.cxx:284:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). stream->write( buf, read ); data/libcmis-0.5.2/src/libcmis-c/session-factory.cxx:79:9: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(user, username.c_str( ), sizeof( user ) ); data/libcmis-0.5.2/src/libcmis-c/session-factory.cxx:82:9: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(pass, password.c_str( ), sizeof( pass ) ); data/libcmis-0.5.2/src/libcmis/atom-document.cxx:196:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is->read( buf, bufLength ); data/libcmis-0.5.2/src/libcmis/atom-object.cxx:434:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read( buf, bufLength ); data/libcmis-0.5.2/src/libcmis/http-session.cxx:81:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read( out, size * nmemb ); data/libcmis-0.5.2/src/libcmis/ws-requests.cxx:107:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read( buf, size ); ANALYSIS SUMMARY: Hits = 45 Lines analyzed = 32756 in approximately 1.16 seconds (28243 lines/second) Physical Source Lines of Code (SLOC) = 23609 Hits@level = [0] 10 [1] 19 [2] 26 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 55 [1+] 45 [2+] 26 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 2.32962 [1+] 1.90605 [2+] 1.10127 [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.