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.