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/ruby-libxml-3.2.0/ext/libxml/ruby_xml_parser_options.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_writer.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_parser_context.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath_object.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_encoding.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_document.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_facet.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_error.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_io.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_element.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_sax2_handler.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_encoding.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_namespace.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_cbg.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_attributes.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_attribute.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_node.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_document.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_reader.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser_options.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_parser.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_relaxng.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_namespaces.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_sax_parser.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_version.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_attribute.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath_context.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser_options.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xinclude.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_libxml.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_sax_parser.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_facet.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_type.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser_context.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_namespace.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_parser.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_parser_context.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_sax2_handler.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath_object.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath_expression.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_attr_decl.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_reader.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_namespaces.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath_expression.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser_context.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_element.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_input_cbg.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath_context.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_writer.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_attributes.c
Examining data/ruby-libxml-3.2.0/ext/libxml/libxml.c
Examining data/ruby-libxml-3.2.0/ext/libxml/extconf.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpointer.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_node.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_attr_decl.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema_type.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_io.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_parser_options.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpath.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_input_cbg.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_error.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_relaxng.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_attr.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_attr.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xpointer.h
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml.c
Examining data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_xinclude.h

FINAL RESULTS:

data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:138:19:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
  VALUE external, system, dtd_string;
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:158:50:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
      rb_scan_args(argc, argv, "32", &external, &system, &name, &doc, &internal);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:164:11:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
      if (system != Qnil) {
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:165:20:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
        Check_Type(system, T_STRING);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:166:51:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
        xsystem = (const xmlChar*) StringValuePtr(system);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:195:48:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
    rb_scan_args(argc, argv, "20", &external, &system);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:198:16:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
    Check_Type(system, T_STRING);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_dtd.c:201:35:  [4] (shell) system:
  This causes a new program to execute and is difficult to use safely
  (CWE-78). try using a library call that implements the same functionality
  if available.
        (xmlChar*) StringValuePtr(system));
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml.c:780: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.
    str = rb_str_new2((const char *) list[i]);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser_context.c:94: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(sax, &htmlDefaultSAXHandler, sizeof(xmlSAXHandlerV1));
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_html_parser_context.c:247: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(ctxt->sax, &htmlDefaultSAXHandler, sizeof(xmlSAXHandlerV1));
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_io.c:25: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(buffer, StringValuePtr(string), size);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_sax_parser.c:91: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(ctxt->sax, &rxml_sax_handler, sizeof(rxml_sax_handler));
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_cbg.c:50: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).
  deb_doc->remaining = (int)strlen(deb_doc->buffer);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_cbg.c:69:3:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
  strncpy(buffer, deb_doc->bpos, ret_len);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_encoding.c:188:58:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  return rb_external_str_new_with_enc((const char*)xstr, strlen((const char*)xstr), rbencoding);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_input_cbg.c:49:32:  [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).
      ic_doc->remaining = (int)strlen(ic_doc->buffer);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_input_cbg.c:72:3:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
  strncpy(buffer, ic_doc->bpos, ret_len);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_input_cbg.c:113: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).
  scheme->name_len = (int)strlen(scheme->scheme_name);
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_relaxng.c:94:74:  [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).
  xparser = xmlRelaxNGNewMemParserCtxt(StringValuePtr(relaxng_str), (int)strlen(StringValuePtr(relaxng_str)));
data/ruby-libxml-3.2.0/ext/libxml/ruby_xml_schema.c:110:72:  [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).
  xparser = xmlSchemaNewMemParserCtxt(StringValuePtr(schema_str), (int)strlen(StringValuePtr(schema_str)));

ANALYSIS SUMMARY:

Hits = 21
Lines analyzed = 14283 in approximately 0.34 seconds (41624 lines/second)
Physical Source Lines of Code (SLOC) = 8368
Hits@level = [0]   1 [1]   8 [2]   5 [3]   0 [4]   8 [5]   0
Hits@level+ = [0+]  22 [1+]  21 [2+]  13 [3+]   8 [4+]   8 [5+]   0
Hits/KSLOC@level+ = [0+] 2.62906 [1+] 2.50956 [2+] 1.55354 [3+] 0.956023 [4+] 0.956023 [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.