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/python-pyscss-1.3.7/scss/src/_speedups.c Examining data/python-pyscss-1.3.7/scss/src/block_locator.c Examining data/python-pyscss-1.3.7/scss/src/block_locator.h Examining data/python-pyscss-1.3.7/scss/src/hashtable.c Examining data/python-pyscss-1.3.7/scss/src/hashtable.h Examining data/python-pyscss-1.3.7/scss/src/py3defs.h Examining data/python-pyscss-1.3.7/scss/src/scanner.c Examining data/python-pyscss-1.3.7/scss/src/scanner.h Examining data/python-pyscss-1.3.7/scss/src/utils.h FINAL RESULTS: data/python-pyscss-1.3.7/scss/src/_speedups.c:36:2: [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(ret, internal_buffer, *len + 1); data/python-pyscss-1.3.7/scss/src/block_locator.c:435:4: [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(self->exc, "Missing closing parenthesis somewhere in block"); data/python-pyscss-1.3.7/scss/src/block_locator.c:443:4: [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(self->exc, "Missing closing string somewhere in block"); data/python-pyscss-1.3.7/scss/src/block_locator.c:451:4: [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(self->exc, "Missing closing string somewhere in block"); data/python-pyscss-1.3.7/scss/src/block_locator.h:33: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 exc[MAX_EXC_STRING]; data/python-pyscss-1.3.7/scss/src/hashtable.c:140: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. if ((newpair->key = memcpy(malloc(len), key, len)) == NULL) { data/python-pyscss-1.3.7/scss/src/scanner.c:232:4: [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(&self->tokens[self->tokens_sz], &best_token, sizeof(Token)); data/python-pyscss-1.3.7/scss/src/scanner.c:384:4: [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(self->exc, "Unimplemented: restriction set changed"); data/python-pyscss-1.3.7/scss/src/scanner.h:47: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 exc[MAX_EXC_STRING]; data/python-pyscss-1.3.7/scss/src/utils.h:11:4: [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(copy, str, len); data/python-pyscss-1.3.7/scss/src/utils.h:27: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. static char strings[10240]; data/python-pyscss-1.3.7/scss/src/utils.h:67:4: [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(write, "\\'"); data/python-pyscss-1.3.7/scss/src/utils.h:71:4: [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(write, "\\r"); data/python-pyscss-1.3.7/scss/src/utils.h:75:4: [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(write, "\\n"); data/python-pyscss-1.3.7/scss/src/utils.h:79:4: [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(write, "\\t"); data/python-pyscss-1.3.7/scss/src/utils.h:83:4: [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(write, "\\x%02x", c); data/python-pyscss-1.3.7/scss/src/_speedups.c:248:55: [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). py_tok = PyUnicode_DecodeUTF8(p_token->regex->tok, strlen(p_token->regex->tok), "strict"); data/python-pyscss-1.3.7/scss/src/scanner.c:175:11: [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 = strlen(regex->tok) + 1; data/python-pyscss-1.3.7/scss/src/scanner.c:208: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). len = strlen(best_token.regex->tok) + 1; data/python-pyscss-1.3.7/scss/src/scanner.c:324:12: [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 = strlen(ignore[i].tok) + 1; data/python-pyscss-1.3.7/scss/src/utils.h:22:28: [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). return PyMem_Strndup(str, strlen(str)); data/python-pyscss-1.3.7/scss/src/utils.h:99:20: [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). return reprn(str, strlen(str)); ANALYSIS SUMMARY: Hits = 22 Lines analyzed = 1969 in approximately 0.20 seconds (9791 lines/second) Physical Source Lines of Code (SLOC) = 1545 Hits@level = [0] 45 [1] 6 [2] 16 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 67 [1+] 22 [2+] 16 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 43.3657 [1+] 14.2395 [2+] 10.356 [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.