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/taningia-0.2.2/include/taningia/atom.h
Examining data/taningia-0.2.2/include/taningia/iri.h
Examining data/taningia-0.2.2/include/taningia/xmpp.h
Examining data/taningia-0.2.2/include/taningia/pubsub.h
Examining data/taningia-0.2.2/include/taningia/log.h
Examining data/taningia-0.2.2/include/taningia/list.h
Examining data/taningia-0.2.2/include/taningia/object.h
Examining data/taningia-0.2.2/include/taningia/taningia.h
Examining data/taningia-0.2.2/include/taningia/error.h
Examining data/taningia-0.2.2/include/taningia/mem.h
Examining data/taningia-0.2.2/include/taningia/srv.h
Examining data/taningia-0.2.2/src/hashtable.h
Examining data/taningia-0.2.2/src/hashtable.c
Examining data/taningia-0.2.2/src/iri.c
Examining data/taningia-0.2.2/src/hashtable-utils.c
Examining data/taningia-0.2.2/src/srv.c
Examining data/taningia-0.2.2/src/list.c
Examining data/taningia-0.2.2/src/atom.c
Examining data/taningia-0.2.2/src/error.c
Examining data/taningia-0.2.2/src/object.c
Examining data/taningia-0.2.2/src/log.c
Examining data/taningia-0.2.2/src/xmpp.c
Examining data/taningia-0.2.2/src/hashtable-utils.h
Examining data/taningia-0.2.2/src/pubsub.c
Examining data/taningia-0.2.2/examples/iri.c
Examining data/taningia-0.2.2/examples/srv.c
Examining data/taningia-0.2.2/examples/list.c
Examining data/taningia-0.2.2/examples/atom.c
Examining data/taningia-0.2.2/examples/xmpp-client-2.c
Examining data/taningia-0.2.2/examples/xmpp-client.c
Examining data/taningia-0.2.2/examples/log.c

FINAL RESULTS:

data/taningia-0.2.2/src/error.c:101:13:  [4] (format) vsnprintf:
  If format strings can be influenced by an attacker, they can be exploited,
  and note that sprintf variations do not always \0-terminate (CWE-134). Use
  a constant for the format specification.
        n = vsnprintf (msg, size, fmt, argp);
data/taningia-0.2.2/src/error.c:144:13:  [4] (format) vsnprintf:
  If format strings can be influenced by an attacker, they can be exploited,
  and note that sprintf variations do not always \0-terminate (CWE-134). Use
  a constant for the format specification.
        n = vsnprintf (msg, size, fmt, argp);
data/taningia-0.2.2/src/iri.c:547:3:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
  sprintf (parent->path, "%s,%s:%s",
data/taningia-0.2.2/src/log.c:114:13:  [4] (format) vsnprintf:
  If format strings can be influenced by an attacker, they can be exploited,
  and note that sprintf variations do not always \0-terminate (CWE-134). Use
  a constant for the format specification.
        n = vsnprintf (msg, size, fmt, argp);   \
data/taningia-0.2.2/src/atom.c:566: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 (content->content, text, len);
data/taningia-0.2.2/src/iri.c:224: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 (ret, iri->scheme, scheme_size);
data/taningia-0.2.2/src/iri.c:231: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 ((ret+position), "://", 3);
data/taningia-0.2.2/src/iri.c:236: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 ((ret+position), ":", 1);
data/taningia-0.2.2/src/iri.c:243: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 ((ret+position), iri->user, user_size);
data/taningia-0.2.2/src/iri.c:245: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 ((ret+position), "@", 1);
data/taningia-0.2.2/src/iri.c:252: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 ((ret+position), iri->host, host_size);
data/taningia-0.2.2/src/iri.c:259:7:  [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 port[4];
data/taningia-0.2.2/src/iri.c:261: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 ((ret+position), ":", 1);
data/taningia-0.2.2/src/iri.c:263:7:  [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 (port, "%d", iri->port);
data/taningia-0.2.2/src/iri.c:265: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 ((ret+position), port, port_size);
data/taningia-0.2.2/src/iri.c:270: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 ((ret+position), iri->path, path_size);
data/taningia-0.2.2/src/iri.c:275: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 ((ret+position), "?", 1);
data/taningia-0.2.2/src/iri.c:277: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 ((ret+position), iri->query, query_size);
data/taningia-0.2.2/src/iri.c:282: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 ((ret+position), "#", 1);
data/taningia-0.2.2/src/iri.c:284: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 ((ret+position), iri->fragment, fragment_size);
data/taningia-0.2.2/src/iri.c:345: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 (iri->scheme, string, size+1);
data/taningia-0.2.2/src/iri.c:436:23:  [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).
          iri->port = atoi (port_str);
data/taningia-0.2.2/src/log.c:169: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 (full, "[", 1);
data/taningia-0.2.2/src/log.c:170: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 (full+1, ltime, size1);
data/taningia-0.2.2/src/log.c:171: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 (full+1+size1, "][", 2);
data/taningia-0.2.2/src/log.c:172: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 (full+3+size1, log->name, size2);
data/taningia-0.2.2/src/log.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 (full+3+size1+size2, "] ", 2);
data/taningia-0.2.2/src/log.c:174: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 (full+5+size1+size2, msg, size3);
data/taningia-0.2.2/src/pubsub.c:42: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 sid[32];
data/taningia-0.2.2/src/pubsub.c:56: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 sid[32];
data/taningia-0.2.2/src/pubsub.c:179: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 num[32];
data/taningia-0.2.2/src/pubsub.c:295:11:  [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 fname[ssize];
data/taningia-0.2.2/src/pubsub.c:354:11:  [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 fname[ssize];
data/taningia-0.2.2/src/srv.c:67: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 buf[1024];
data/taningia-0.2.2/src/iri.c:190: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).
  scheme_size = strlen (iri->scheme);
data/taningia-0.2.2/src/iri.c:191:27:  [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).
  host_size = iri->host ? strlen (iri->host) : 0;
data/taningia-0.2.2/src/iri.c:197: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).
      user_size = strlen (iri->user);
data/taningia-0.2.2/src/iri.c:203: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).
    path_size = strlen (iri->path);
data/taningia-0.2.2/src/iri.c:206: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).
      query_size = strlen (iri->query);
data/taningia-0.2.2/src/iri.c:211: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).
      fragment_size = strlen (iri->fragment);
data/taningia-0.2.2/src/iri.c:264: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).
      port_size = strlen (port);
data/taningia-0.2.2/src/iri.c:543:26:  [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).
  parent->path = malloc (strlen (tag->authority) +
data/taningia-0.2.2/src/iri.c:544:26:  [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 (tag->date) +
data/taningia-0.2.2/src/iri.c:545:26:  [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 (tag->specific) +
data/taningia-0.2.2/src/log.c:164:15:  [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).
      size1 = strlen (ltime),
data/taningia-0.2.2/src/log.c:165:15:  [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).
      size2 = strlen (log->name),
data/taningia-0.2.2/src/log.c:166:15:  [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).
      size3 = strlen (msg),
data/taningia-0.2.2/src/pubsub.c:294:26:  [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 ssize = strlen (arg)+7+1;
data/taningia-0.2.2/src/pubsub.c:353:26:  [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 ssize = strlen (arg)+7+1;
data/taningia-0.2.2/src/xmpp.c:265: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).
  jid_len = strlen (jid);

ANALYSIS SUMMARY:

Hits = 50
Lines analyzed = 8919 in approximately 0.25 seconds (36136 lines/second)
Physical Source Lines of Code (SLOC) = 5443
Hits@level = [0] 105 [1]  16 [2]  30 [3]   0 [4]   4 [5]   0
Hits@level+ = [0+] 155 [1+]  50 [2+]  34 [3+]   4 [4+]   4 [5+]   0
Hits/KSLOC@level+ = [0+] 28.4769 [1+] 9.18611 [2+] 6.24656 [3+] 0.734889 [4+] 0.734889 [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.