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/identity4c-1.0/identity-resolver.c
Examining data/identity4c-1.0/identity-xml-parser.c
Examining data/identity4c-1.0/identity-xml-parser.h
Examining data/identity4c-1.0/picohttpparser.h
Examining data/identity4c-1.0/identity-resolver.h
Examining data/identity4c-1.0/identity.h
Examining data/identity4c-1.0/identity.c
Examining data/identity4c-1.0/picohttpparser.c
Examining data/identity4c-1.0/strmap.h
Examining data/identity4c-1.0/identity-openssl-bridge.c
Examining data/identity4c-1.0/identity-openssl-bridge.h
Examining data/identity4c-1.0/strmap.c

FINAL RESULTS:

data/identity4c-1.0/identity-openssl-bridge.c:145:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(hostname, "%s:%d", get_host(), HOST_PORT);
data/identity4c-1.0/identity-openssl-bridge.c:306:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(str, "POST %s HTTP/1.1\r\nHost: %s", path, get_host());
data/identity4c-1.0/identity-openssl-bridge.c:312:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(str, "\r\n\r\n%s", query);
data/identity4c-1.0/identity-openssl-bridge.c:405:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(buffer + strlen(buffer), "%s=%s&", key, value);
data/identity4c-1.0/strmap.c:136: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(out_buf, pair->value);
data/identity4c-1.0/strmap.c:198:3:  [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(pair->value, value);
data/identity4c-1.0/strmap.c:242: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(pair->key, key);
data/identity4c-1.0/strmap.c:243: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(pair->value, value);
data/identity4c-1.0/identity-openssl-bridge.c:144: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 hostname[256];
data/identity4c-1.0/identity-openssl-bridge.c:304: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 str[256];
data/identity4c-1.0/identity-openssl-bridge.c:310:5:  [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(str, "\r\nContent-Length: %zu", strlen(query));
data/identity4c-1.0/identity-openssl-bridge.c:367:31:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
                data_length = atoi(headers[i].value);
data/identity4c-1.0/identity-openssl-bridge.c:390:13:  [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(response, data + pret, data_length);
data/identity4c-1.0/identity-xml-parser.c:12: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(dest, src, strlen(src));
data/identity4c-1.0/identity-openssl-bridge.c:22:16:  [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).
    int blen = strlen(base);
data/identity4c-1.0/identity-openssl-bridge.c:23:16:  [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).
    int slen = strlen(str);
data/identity4c-1.0/identity-openssl-bridge.c:310:45:  [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).
    sprintf(str, "\r\nContent-Length: %zu", strlen(query));
data/identity4c-1.0/identity-openssl-bridge.c:405:22:  [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).
    sprintf(buffer + strlen(buffer), "%s=%s&", key, value);
data/identity4c-1.0/identity-openssl-bridge.c:414:18:  [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).
    query_buffer[strlen(query_buffer) - 1] = '\0';
data/identity4c-1.0/identity-xml-parser.c:10: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).
    dest = (char *) malloc(strlen(src) + 1);
data/identity4c-1.0/identity-xml-parser.c:11: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).
    memset(dest, 0, strlen(src) + 1);
data/identity4c-1.0/identity-xml-parser.c:12:23:  [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).
    memcpy(dest, src, strlen(src));
data/identity4c-1.0/strmap.c:128:10:  [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 strlen(pair->value) + 1;
data/identity4c-1.0/strmap.c:133: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(pair->value) >= n_out_buf) {
data/identity4c-1.0/strmap.c:175: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).
	key_len = strlen(key);
data/identity4c-1.0/strmap.c:176:14:  [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).
	value_len = strlen(value);
data/identity4c-1.0/strmap.c:187:7:  [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(pair->value) < value_len) {

ANALYSIS SUMMARY:

Hits = 27
Lines analyzed = 2556 in approximately 0.16 seconds (16022 lines/second)
Physical Source Lines of Code (SLOC) = 1495
Hits@level = [0]  13 [1]  13 [2]   6 [3]   0 [4]   8 [5]   0
Hits@level+ = [0+]  40 [1+]  27 [2+]  14 [3+]   8 [4+]   8 [5+]   0
Hits/KSLOC@level+ = [0+] 26.7559 [1+] 18.0602 [2+] 9.36455 [3+] 5.35117 [4+] 5.35117 [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.