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/gupnp-av-0.12.11/tests/check-search.c
Examining data/gupnp-av-0.12.11/tests/check-feature-list-parser.c
Examining data/gupnp-av-0.12.11/tests/gtest/test-cds-last-change-parser.c
Examining data/gupnp-av-0.12.11/tests/gtest/test-regression.c
Examining data/gupnp-av-0.12.11/tests/gtest/test-media-collection.c
Examining data/gupnp-av-0.12.11/tests/gtest/test-last-change-parser.c
Examining data/gupnp-av-0.12.11/tests/gtest/test-didl-lite-object.c
Examining data/gupnp-av-0.12.11/tests/fragments.c
Examining data/gupnp-av-0.12.11/tests/test-search-criteria-parser.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-av.h
Examining data/gupnp-av-0.12.11/libgupnp-av/fragment-util.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-container.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-dlna.c
Examining data/gupnp-av-0.12.11/libgupnp-av/xml-util.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-dlna.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-media-collection.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-av-error.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-cds-last-change-parser.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-contributor.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-writer-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-last-change-parser.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-writer.c
Examining data/gupnp-av-0.12.11/libgupnp-av/fragment-util.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-resource.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-parser.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-object.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-media-collection.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-search-criteria-parser.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-av-marshal.c
Examining data/gupnp-av-0.12.11/libgupnp-av/time-utils.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-createclass-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-contributor-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-createclass.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-descriptor.h
Examining data/gupnp-av-0.12.11/libgupnp-av/time-utils.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-createclass.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-writer.h
Examining data/gupnp-av-0.12.11/libgupnp-av/xsd-data.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-av-enums.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-descriptor-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-av-error.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-object-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/xsd-data.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-cds-last-change-parser.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-item.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-contributor.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-container.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-parser.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-av-marshal.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-search-criteria-parser.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-parser-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-item.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-descriptor.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-object.h
Examining data/gupnp-av-0.12.11/libgupnp-av/xml-util.c
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-resource-private.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-resource.h
Examining data/gupnp-av-0.12.11/libgupnp-av/gupnp-last-change-parser.c

FINAL RESULTS:

data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.c:101:25:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
                        strcat (object_ids, content);
data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-object.c:1488:16:  [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).
        return atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-resource.c:110:26:  [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).
                *width = atoi (tokens[0]);
data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-resource.c:112:27:  [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).
                *height = atoi (tokens[1]);
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:122:66:  [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).
                                                                 atoi (p));
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:59:21:  [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).
                i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:65:21:  [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).
                i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:71:21:  [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).
                i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:77:21:  [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).
                i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:83:21:  [2] (integer) atol:
  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).
                l = atol (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:89:21:  [2] (integer) atol:
  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).
                l = atol (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:114:29:  [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).
                        i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gvalue-util.c:133:29:  [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).
                        i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/xml-util.c:223:21:  [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).
                i = atoi (str);
data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-parser.c:243:39:  [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).
        doc = xmlRecoverMemory (didl, strlen (didl));
data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-writer.c:125: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).
                len = strlen (a);
data/gupnp-av-0.12.11/libgupnp-av/gupnp-didl-lite-writer.c:132: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 strlen (b) - len;
data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.c:93:36:  [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).
                        new_size = strlen (object_ids) + strlen (content) + 1;
data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.c:93:58:  [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).
                        new_size = strlen (object_ids) + strlen (content) + 1;
data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.c:100:33:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
                                strcat (object_ids, ",");
data/gupnp-av-0.12.11/libgupnp-av/gupnp-feature-list-parser.c:130:39:  [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).
        doc = xmlRecoverMemory (text, strlen (text));
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:89:35:  [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 (tokens[i]),
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:99:35:  [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 (tokens[i]),
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:116:35:  [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 (tokens[i]),
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:128:35:  [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 (tokens[i]),
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:141:35:  [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 (tokens[i]),
data/gupnp-av-0.12.11/libgupnp-av/gupnp-protocol-info.c:145: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).
                        if (strlen (p) > 8)
data/gupnp-av-0.12.11/libgupnp-av/gupnp-search-criteria-parser.c:577:60:  [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).
        g_scanner_input_text (parser->priv->scanner, text, strlen (text));
data/gupnp-av-0.12.11/libgupnp-av/xml-util.c:369:18:  [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.
        gboolean equal;
data/gupnp-av-0.12.11/libgupnp-av/xml-util.c:410:13:  [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.
        if (equal) {
data/gupnp-av-0.12.11/libgupnp-av/xml-util.c:426:16:  [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.
        return equal;

ANALYSIS SUMMARY:

Hits = 31
Lines analyzed = 18471 in approximately 0.45 seconds (41471 lines/second)
Physical Source Lines of Code (SLOC) = 11689
Hits@level = [0]   1 [1]  17 [2]  13 [3]   0 [4]   1 [5]   0
Hits@level+ = [0+]  32 [1+]  31 [2+]  14 [3+]   1 [4+]   1 [5+]   0
Hits/KSLOC@level+ = [0+] 2.73762 [1+] 2.65207 [2+] 1.19771 [3+] 0.0855505 [4+] 0.0855505 [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.