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/grilo-plugins-0.3.12/help/examples/example-tmdb.c
Examining data/grilo-plugins-0.3.12/src/bookmarks/bookmarks-resource.c
Examining data/grilo-plugins-0.3.12/src/bookmarks/bookmarks-resource.h
Examining data/grilo-plugins-0.3.12/src/bookmarks/grl-bookmarks.c
Examining data/grilo-plugins-0.3.12/src/bookmarks/grl-bookmarks.h
Examining data/grilo-plugins-0.3.12/src/chromaprint/grl-chromaprint.c
Examining data/grilo-plugins-0.3.12/src/chromaprint/grl-chromaprint.h
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-server.c
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-server.h
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-servers-manager.c
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-servers-manager.h
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-source.c
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-source.h
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.h
Examining data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-common.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-common.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-compat.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-db.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-db.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-record-factory.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-record-factory.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-record.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap-record.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-daap.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dmap-compat.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-compat.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-db.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-db.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-record-factory.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-record-factory.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-record.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap-record.h
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap.c
Examining data/grilo-plugins-0.3.12/src/dmap/grl-dpap.h
Examining data/grilo-plugins-0.3.12/src/filesystem/grl-filesystem.c
Examining data/grilo-plugins-0.3.12/src/filesystem/grl-filesystem.h
Examining data/grilo-plugins-0.3.12/src/flickr/flickr-oauth.c
Examining data/grilo-plugins-0.3.12/src/flickr/flickr-oauth.h
Examining data/grilo-plugins-0.3.12/src/flickr/gflickr.c
Examining data/grilo-plugins-0.3.12/src/flickr/gflickr.h
Examining data/grilo-plugins-0.3.12/src/flickr/grl-flickr.c
Examining data/grilo-plugins-0.3.12/src/flickr/grl-flickr.h
Examining data/grilo-plugins-0.3.12/src/freebox/freebox-monitor.c
Examining data/grilo-plugins-0.3.12/src/freebox/freebox-monitor.h
Examining data/grilo-plugins-0.3.12/src/freebox/grl-freebox.c
Examining data/grilo-plugins-0.3.12/src/freebox/grl-freebox.h
Examining data/grilo-plugins-0.3.12/src/gravatar/grl-gravatar.c
Examining data/grilo-plugins-0.3.12/src/gravatar/grl-gravatar.h
Examining data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.c
Examining data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.h
Examining data/grilo-plugins-0.3.12/src/local-metadata/grl-local-metadata.c
Examining data/grilo-plugins-0.3.12/src/local-metadata/grl-local-metadata.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-common.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-factory.c
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-factory.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library-operations.c
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library-operations.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c
Examining data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/lua-library/htmlentity.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/lua-library/lua-json.c
Examining data/grilo-plugins-0.3.12/src/lua-factory/lua-library/lua-libraries.h
Examining data/grilo-plugins-0.3.12/src/lua-factory/lua-library/lua-xml.c
Examining data/grilo-plugins-0.3.12/src/magnatune/grl-magnatune.c
Examining data/grilo-plugins-0.3.12/src/magnatune/grl-magnatune.h
Examining data/grilo-plugins-0.3.12/src/metadata-store/grl-metadata-store.c
Examining data/grilo-plugins-0.3.12/src/metadata-store/grl-metadata-store.h
Examining data/grilo-plugins-0.3.12/src/opensubtitles/grl-opensubtitles.c
Examining data/grilo-plugins-0.3.12/src/opensubtitles/grl-opensubtitles.h
Examining data/grilo-plugins-0.3.12/src/optical-media/grl-optical-media.c
Examining data/grilo-plugins-0.3.12/src/optical-media/grl-optical-media.h
Examining data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c
Examining data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.h
Examining data/grilo-plugins-0.3.12/src/raitv/grl-raitv.c
Examining data/grilo-plugins-0.3.12/src/raitv/grl-raitv.h
Examining data/grilo-plugins-0.3.12/src/shoutcast/grl-shoutcast.c
Examining data/grilo-plugins-0.3.12/src/shoutcast/grl-shoutcast.h
Examining data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.c
Examining data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.h
Examining data/grilo-plugins-0.3.12/src/thetvdb/thetvdb-resources-episodes.c
Examining data/grilo-plugins-0.3.12/src/thetvdb/thetvdb-resources-fuzzy-names.c
Examining data/grilo-plugins-0.3.12/src/thetvdb/thetvdb-resources-series.c
Examining data/grilo-plugins-0.3.12/src/thetvdb/thetvdb-resources.h
Examining data/grilo-plugins-0.3.12/src/tmdb/grl-tmdb-request.c
Examining data/grilo-plugins-0.3.12/src/tmdb/grl-tmdb-request.h
Examining data/grilo-plugins-0.3.12/src/tmdb/grl-tmdb.c
Examining data/grilo-plugins-0.3.12/src/tmdb/grl-tmdb.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-request-queue.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-request-queue.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-api.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-api.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-cache.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-cache.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-notif.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-notif.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-priv.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-utils.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker-utils.h
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker.c
Examining data/grilo-plugins-0.3.12/src/tracker/grl-tracker.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-api.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-api.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-cache.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-cache.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-notif.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-notif.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-priv.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-utils.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-utils.h
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker.c
Examining data/grilo-plugins-0.3.12/src/tracker3/grl-tracker.h
Examining data/grilo-plugins-0.3.12/src/vimeo/grl-vimeo.c
Examining data/grilo-plugins-0.3.12/src/vimeo/grl-vimeo.h
Examining data/grilo-plugins-0.3.12/src/vimeo/gvimeo.c
Examining data/grilo-plugins-0.3.12/src/vimeo/gvimeo.h
Examining data/grilo-plugins-0.3.12/src/youtube/grl-youtube.c
Examining data/grilo-plugins-0.3.12/src/youtube/grl-youtube.h
Examining data/grilo-plugins-0.3.12/tests/chromaprint/test_chromaprint_resolve.c
Examining data/grilo-plugins-0.3.12/tests/chromaprint/test_chromaprint_utils.c
Examining data/grilo-plugins-0.3.12/tests/chromaprint/test_chromaprint_utils.h
Examining data/grilo-plugins-0.3.12/tests/dleyna/test_dleyna.c
Examining data/grilo-plugins-0.3.12/tests/dleyna/test_dleyna_utils.c
Examining data/grilo-plugins-0.3.12/tests/dleyna/test_dleyna_utils.h
Examining data/grilo-plugins-0.3.12/tests/games/test_games.c
Examining data/grilo-plugins-0.3.12/tests/local-metadata/test_local_metadata.c
Examining data/grilo-plugins-0.3.12/tests/lua-factory/sources/test_lua_acoustid.c
Examining data/grilo-plugins-0.3.12/tests/lua-factory/sources/test_lua_factory_utils.c
Examining data/grilo-plugins-0.3.12/tests/lua-factory/sources/test_lua_factory_utils.h
Examining data/grilo-plugins-0.3.12/tests/lua-factory/sources/test_lua_theaudiodb.c
Examining data/grilo-plugins-0.3.12/tests/lua-factory/test_lua_factory_grl_media.c
Examining data/grilo-plugins-0.3.12/tests/lua-factory/test_lua_factory_source_errors.c
Examining data/grilo-plugins-0.3.12/tests/lua-factory/test_lua_factory_xml_parser.c
Examining data/grilo-plugins-0.3.12/tests/steam-store/test_steam_store.c
Examining data/grilo-plugins-0.3.12/tests/thetvdb/test_thetvdb_resolve_episodes.c
Examining data/grilo-plugins-0.3.12/tests/thetvdb/test_thetvdb_resolve_shows.c
Examining data/grilo-plugins-0.3.12/tests/thetvdb/test_thetvdb_resolve_stress.c
Examining data/grilo-plugins-0.3.12/tests/thetvdb/test_thetvdb_utils.c
Examining data/grilo-plugins-0.3.12/tests/thetvdb/test_thetvdb_utils.h
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_fast_resolution.c
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_fast_resolution_by_id.c
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_full_resolution.c
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_missing_configuration.c
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_preconditions.c
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_utils.c
Examining data/grilo-plugins-0.3.12/tests/tmdb/test_tmdb_utils.h
Examining data/grilo-plugins-0.3.12/tests/tracker3/test_tracker3.c
Examining data/grilo-plugins-0.3.12/tests/vimeo/test_vimeo.c

FINAL RESULTS:

data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:97: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 (buf, tmp);
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:158:11:  [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 (to, buf);
data/grilo-plugins-0.3.12/src/filesystem/grl-filesystem.c:785:14:  [3] (buffer) g_get_home_dir:
  This function is synonymous with 'getenv("HOME")';it returns untrustable
  input if the environment can beset by an attacker. It can have any content
  and length, and the same variable can be set more than once (CWE-807,
  CWE-20). Check environment variables carefully before using them.
      home = g_get_home_dir ();
data/grilo-plugins-0.3.12/src/vimeo/gvimeo.c:178:22:  [3] (random) g_random_int:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  guint rnd_number = g_random_int ();
data/grilo-plugins-0.3.12/tests/thetvdb/test_thetvdb_utils.c:39:33:  [3] (buffer) g_get_tmp_dir:
  This function is synonymous with 'getenv("TMP")';it returns untrustable
  input if the environment can beset by an attacker. It can have any content
  and length, and the same variable can be set more than once (CWE-807,
  CWE-20). Check environment variables carefully before using them.
    tmp_dir = g_build_filename (g_get_tmp_dir (), "test-thetvdb-XXXXXX", NULL);
data/grilo-plugins-0.3.12/src/bookmarks/grl-bookmarks.c:532:15:  [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).
  parent_id = atoi (category_id);
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:128: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 buffer[8 + 4 + 1 + 1];
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:220: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 buffer[4*8 + 4 + 1 + 1];
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:316:7:  [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 (ipv6.sin6_addr.s6_addr + 12, &((struct sockaddr_in*) native_sockaddr)->sin_port, 4);
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:337:3:  [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_buffer[HOSTNAME_LENGTH+1];
data/grilo-plugins-0.3.12/src/dmap/grl-dpap-db.c:173: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 (url, "http", 4);
data/grilo-plugins-0.3.12/src/freebox/grl-freebox.c:350:17:  [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).
  channel_num = atoi (title);
data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.c:530:38:  [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).
      grl_media_set_duration (media, atoi (entry->album_duration));
data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.c:556:38:  [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).
      grl_media_set_duration (media, atoi (entry->track_duration));
data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.c:988: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).
    category = atoi (id_split[0]);
data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.c:1118: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).
    category = atoi (container_split[0]);
data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.c:1170:19:  [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).
        feed_id = atoi (container_split[1]);
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-factory.c:62:14:  [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 *LUA_SOURCE_OPERATION[LUA_NUM_OPERATIONS] = {
data/grilo-plugins-0.3.12/src/opensubtitles/grl-opensubtitles.c:322:10:  [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 (g_value_get_string (val));
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:549: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).
    seconds += atoi (parts[i]) * multiplier;
data/grilo-plugins-0.3.12/src/raitv/grl-raitv.c:511:48:  [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).
                                        (gint) atoi (strvalue));
data/grilo-plugins-0.3.12/src/raitv/grl-raitv.c:721:48:  [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).
                                        (gint) atoi (strvalue));
data/grilo-plugins-0.3.12/src/raitv/grl-raitv.c:918:39:  [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).
        date = g_date_time_new_local (atoi (tokens[2]), atoi (tokens[1]), atoi (tokens[0]), 0, 0, 0);
data/grilo-plugins-0.3.12/src/raitv/grl-raitv.c:918:57:  [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).
        date = g_date_time_new_local (atoi (tokens[2]), atoi (tokens[1]), atoi (tokens[0]), 0, 0, 0);
data/grilo-plugins-0.3.12/src/raitv/grl-raitv.c:918:75:  [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).
        date = g_date_time_new_local (atoi (tokens[2]), atoi (tokens[1]), atoi (tokens[0]), 0, 0, 0);
data/grilo-plugins-0.3.12/src/shoutcast/grl-shoutcast.c:325:33:  [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).
  grl_media_set_bitrate (media, atoi (station_bitrate));
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:146:5:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
    strncpy(buffer, line + j, sizeof(buffer));
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:169:7:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
      strncpy(buffer, line + j, sizeof(buffer));
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:239:5:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
    strncpy(buffer, line + j, sizeof(buffer));
data/grilo-plugins-0.3.12/src/dleyna/grl-dleyna-utils.c:269:7:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
      strncpy(buffer, line + j, sizeof(buffer));
data/grilo-plugins-0.3.12/src/freebox/grl-freebox.c:305:31:  [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).
  s = strstr (title, " - ") + strlen (" - ");
data/grilo-plugins-0.3.12/src/freebox/grl-freebox.c:310: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 g_strndup (s, strlen (s) - strlen (flavours[i]));
data/grilo-plugins-0.3.12/src/freebox/grl-freebox.c:310:41:  [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 g_strndup (s, strlen (s) - strlen (flavours[i]));
data/grilo-plugins-0.3.12/src/jamendo/grl-jamendo.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).
  doc = xmlReadMemory (str, strlen (str), NULL, NULL,
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-factory.c:342:46:  [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_string_insert_len (str, -1, script_path, strlen (script_path) - strlen (".lua"));
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-factory.c:342:69:  [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_string_insert_len (str, -1, script_path, strlen (script_path) - strlen (".lua"));
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:159: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).
          to += strlen (buf) - 1;
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:683:41:  [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).
    lua_pushlstring (L, fo->results[0], strlen (fo->results[0]));
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:688:43:  [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).
      lua_pushlstring (L, fo->results[i], strlen (fo->results[i]));
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:769:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ssize_t read;
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:774:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      if (read <= 0) {
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:776:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read < 0)
data/grilo-plugins-0.3.12/src/lua-factory/grl-lua-library.c:832:37:  [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).
    lua_pushlstring (L, results[i], strlen (results[i]));
data/grilo-plugins-0.3.12/src/lua-factory/lua-library/lua-xml.c:170: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 (xml_str);
data/grilo-plugins-0.3.12/src/magnatune/grl-magnatune.c:718:37:  [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).
  ret = sqlite3_prepare_v2(db, sql, strlen(sql), &sql_stmt, NULL);
data/grilo-plugins-0.3.12/src/metadata-store/grl-metadata-store.c:426: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).
  r = sqlite3_prepare_v2 (db, sql, strlen (sql), &stmt, NULL);
data/grilo-plugins-0.3.12/src/opensubtitles/grl-opensubtitles.c:376:38:  [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_string_insert_len (str, -1, url, strlen (url) - strlen (".gz"));
data/grilo-plugins-0.3.12/src/opensubtitles/grl-opensubtitles.c:376:53:  [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_string_insert_len (str, -1, url, strlen (url) - strlen (".gz"));
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:752: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).
  r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL);
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:920: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).
			  strlen (GRL_SQL_STORE_PODCAST),
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:998: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).
			  strlen (GRL_SQL_STORE_STREAM),
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:1120: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).
			  strlen (GRL_SQL_TOUCH_PODCAST),
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:1398: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).
  r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL);
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:1492: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).
  r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL);
data/grilo-plugins-0.3.12/src/podcasts/grl-podcasts.c:1565: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).
  r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL);
data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.c:477: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).
    if (strlen (strv[i]) != 2)
data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.c:1075:33:  [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_ptr = xmlReadMemory (str, strlen (str), NULL, NULL,
data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.c:1172:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ssize_t read;
data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.c:1177:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      if (read <= 0) {
data/grilo-plugins-0.3.12/src/thetvdb/grl-thetvdb.c:1179:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read < 0)
data/grilo-plugins-0.3.12/src/tracker/grl-tracker-source-api.c:229: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).
  suffix_len = strlen (ext);
data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-api.c:98: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).
    suffix_len = strlen (ext);
data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.c:278:47:  [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.
compare_lists (GList *a, GList *b, GEqualFunc equal)
data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.c:284:12:  [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 (l1->data, l2->data))
data/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.c:315:14:  [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/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.c:327:10:  [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/grilo-plugins-0.3.12/src/tracker3/grl-tracker-source-statements.c:336:10:  [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/grilo-plugins-0.3.12/src/vimeo/gvimeo.c:217: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).
  hmac = g_hmac_new (G_CHECKSUM_SHA1, (guchar *) key, strlen (key));
data/grilo-plugins-0.3.12/src/vimeo/gvimeo.c:218:44:  [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_hmac_update (hmac, (guchar *) message, strlen (message));
data/grilo-plugins-0.3.12/src/youtube/grl-youtube.c:1148:13:  [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).
  marker += strlen (YOUTUBE_WATCH_URL);

ANALYSIS SUMMARY:

Hits = 70
Lines analyzed = 51255 in approximately 1.13 seconds (45408 lines/second)
Physical Source Lines of Code (SLOC) = 37367
Hits@level = [0]   8 [1]  44 [2]  21 [3]   3 [4]   2 [5]   0
Hits@level+ = [0+]  78 [1+]  70 [2+]  26 [3+]   5 [4+]   2 [5+]   0
Hits/KSLOC@level+ = [0+] 2.0874 [1+] 1.87331 [2+] 0.695801 [3+] 0.133808 [4+] 0.0535232 [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.