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/xmms2-scrobbler-0.4.0/src/strbuf.c
Examining data/xmms2-scrobbler-0.4.0/src/list.h
Examining data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c
Examining data/xmms2-scrobbler-0.4.0/src/queue.h
Examining data/xmms2-scrobbler-0.4.0/src/submission.c
Examining data/xmms2-scrobbler-0.4.0/src/strbuf.h
Examining data/xmms2-scrobbler-0.4.0/src/md5.h
Examining data/xmms2-scrobbler-0.4.0/src/queue.c
Examining data/xmms2-scrobbler-0.4.0/src/submission.h
Examining data/xmms2-scrobbler-0.4.0/src/list.c
Examining data/xmms2-scrobbler-0.4.0/src/md5.c

FINAL RESULTS:

data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:185: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 (server->session_id, ptr);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:207: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 (server->np_url, ptr);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:229: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 (server->subm_url, ptr);
data/xmms2-scrobbler-0.4.0/src/md5.c:192:4:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
			memcpy (p, buf, len);
data/xmms2-scrobbler-0.4.0/src/md5.c:196:3:  [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 (p, buf, t);
data/xmms2-scrobbler-0.4.0/src/md5.c:205:3:  [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 (ctx->in, buf, 64);
data/xmms2-scrobbler-0.4.0/src/md5.c:213:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy (ctx->in, buf, len);
data/xmms2-scrobbler-0.4.0/src/md5.c:258:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy (digest, ctx->buf, 16);
data/xmms2-scrobbler-0.4.0/src/md5.c:262:12:  [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.
md5 (const char *input, char output[33])
data/xmms2-scrobbler-0.4.0/src/md5.c:262:25:  [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.
md5 (const char *input, char output[33])
data/xmms2-scrobbler-0.4.0/src/md5.h:27:17:  [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.
void md5 (const char *input, char output[33]);
data/xmms2-scrobbler-0.4.0/src/md5.h:27:30:  [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.
void md5 (const char *input, char output[33]);
data/xmms2-scrobbler-0.4.0/src/strbuf.c:86:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy (sb->buf + sb->length, other, len + 1);
data/xmms2-scrobbler-0.4.0/src/strbuf.c:93:15:  [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 hex[16] = "0123456789abcdef";
data/xmms2-scrobbler-0.4.0/src/submission.c:83: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 buf32[32];
data/xmms2-scrobbler-0.4.0/src/submission.c:85:3:  [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 (buf32, "%i", val_i / 1000);
data/xmms2-scrobbler-0.4.0/src/submission.c:111:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buf32[32];
data/xmms2-scrobbler-0.4.0/src/submission.c:150:2:  [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 (buf32, "%lu", started_playing);
data/xmms2-scrobbler-0.4.0/src/submission.c:161:2:  [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 (buf32, "%i", val_i / 1000);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:52:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char name[NAME_MAX + 1];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:54:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char user[64], hashed_password[33];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:55:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char session_id[256], np_url[256], subm_url[256];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:56:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char handshake_url[256];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:76:8:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
static char proxy_host[128];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:292:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char hashed[64], post_data[512];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:299:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy (hashed, server->hashed_password, 32);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:660:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buf[4096];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:681: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).
		proxy_port = atoi (&line[12]);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:709:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buf[XMMS_PATH_MAX], config_dir[PATH_MAX], filename[PATH_MAX];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:724:7:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fp = fopen (filename, "r");
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:764:8:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fp = fopen (filename, "r");
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:789:8:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fp = fopen (filename, "r");
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:825:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buf[XMMS_PATH_MAX];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:826:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char filename[PATH_MAX];
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:839:7:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fp = fopen (filename, "w");
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:899:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buf[XMMS_PATH_MAX];
data/xmms2-scrobbler-0.4.0/src/md5.c:270: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).
	md5_update (&ctx, (uint8_t *) input, strlen (input));
data/xmms2-scrobbler-0.4.0/src/strbuf.c:82:8:  [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 (other);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:90:2:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
	strncpy (server->name, name, sizeof (server->name));
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:267: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).
	} else if (total >= strlen ("FAILED ")) {
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:663:19:  [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).
		size_t length = strlen (buf);
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:678:3:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
		strncpy (proxy_host, &line[7], sizeof (proxy_host));
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:690:3:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
		strncpy (server->handshake_url, &line[15],
data/xmms2-scrobbler-0.4.0/src/xmms2-scrobbler.c:694:3:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
		strncpy (server->user, &line[6], sizeof (server->user));

ANALYSIS SUMMARY:

Hits = 44
Lines analyzed = 1970 in approximately 0.08 seconds (24448 lines/second)
Physical Source Lines of Code (SLOC) = 1214
Hits@level = [0]  44 [1]   8 [2]  33 [3]   0 [4]   3 [5]   0
Hits@level+ = [0+]  88 [1+]  44 [2+]  36 [3+]   3 [4+]   3 [5+]   0
Hits/KSLOC@level+ = [0+] 72.4876 [1+] 36.2438 [2+] 29.654 [3+] 2.47117 [4+] 2.47117 [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.