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/rodbc-1.3-17/src/RODBC.c FINAL RESULTS: data/rodbc-1.3-17/src/RODBC.c:337:6: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(message, data/rodbc-1.3-17/src/RODBC.c:1046:2: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(message, data/rodbc-1.3-17/src/RODBC.c:1065:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy((char *) thisHandle->ColData[j].ColName, data/rodbc-1.3-17/src/RODBC.c:1281:2: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(message,"%s %d %s", sqlstate, (int)NativeError, msg); data/rodbc-1.3-17/src/RODBC.c:1296:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(s2, s); data/rodbc-1.3-17/src/RODBC.c:588: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[1000]; data/rodbc-1.3-17/src/RODBC.c:780: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(RAW(ans), ptr, len); data/rodbc-1.3-17/src/RODBC.c:1271: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 message[SQL_MAX_MESSAGE_LENGTH+16]; data/rodbc-1.3-17/src/RODBC.c:1468: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 message[SQL_MAX_DSN_LENGTH+101]; data/rodbc-1.3-17/src/RODBC.c:1487:6: [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. sprintf(message, "SQLDataSources returned: %d", retval); data/rodbc-1.3-17/src/RODBC.c:336:29: [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). char *message = Calloc(strlen(cquery)+50, char); data/rodbc-1.3-17/src/RODBC.c:380:27: [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). len1 = (SQLSMALLINT) strlen(catalog); data/rodbc-1.3-17/src/RODBC.c:384:27: [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). len2 = (SQLSMALLINT) strlen(schema); data/rodbc-1.3-17/src/RODBC.c:421:27: [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). len1 = (SQLSMALLINT) strlen(catalog); data/rodbc-1.3-17/src/RODBC.c:425:27: [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). len2 = (SQLSMALLINT) strlen(schema); data/rodbc-1.3-17/src/RODBC.c:461:27: [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). len1 = (SQLSMALLINT) strlen(catalog); data/rodbc-1.3-17/src/RODBC.c:465:27: [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). len2 = (SQLSMALLINT) strlen(schema); data/rodbc-1.3-17/src/RODBC.c:504:27: [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). len1 = (SQLSMALLINT) strlen(catalog); data/rodbc-1.3-17/src/RODBC.c:508:27: [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). len2 = (SQLSMALLINT) strlen(schema); data/rodbc-1.3-17/src/RODBC.c:512:27: [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). len3 = (SQLSMALLINT) strlen(tName); data/rodbc-1.3-17/src/RODBC.c:516:27: [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). len4 = (SQLSMALLINT) strlen(tType); data/rodbc-1.3-17/src/RODBC.c:1043:9: [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). strlen(cquery) ); data/rodbc-1.3-17/src/RODBC.c:1045:25: [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). char *message = Calloc(strlen(cquery)+50, char); data/rodbc-1.3-17/src/RODBC.c:1162:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(thisHandle->ColData[j].pData, cData, datalen); data/rodbc-1.3-17/src/RODBC.c:1164:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if(strlen(cData) > datalen) data/rodbc-1.3-17/src/RODBC.c:1295:17: [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). s2 = Calloc(strlen(s) + 1, char); ANALYSIS SUMMARY: Hits = 26 Lines analyzed = 1542 in approximately 0.06 seconds (25259 lines/second) Physical Source Lines of Code (SLOC) = 1204 Hits@level = [0] 0 [1] 16 [2] 5 [3] 0 [4] 5 [5] 0 Hits@level+ = [0+] 26 [1+] 26 [2+] 10 [3+] 5 [4+] 5 [5+] 0 Hits/KSLOC@level+ = [0+] 21.5947 [1+] 21.5947 [2+] 8.30565 [3+] 4.15282 [4+] 4.15282 [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.