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/otcl-1.14+dfsg/otcl.c
Examining data/otcl-1.14+dfsg/otcl.h
Examining data/otcl-1.14+dfsg/otclAppInit.c
Examining data/otcl-1.14+dfsg/otkAppInit.c

FINAL RESULTS:

data/otcl-1.14+dfsg/otcl.c:45:5:  [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((char*)ckalloc(strlen(B)+1), B);\
data/otcl-1.14+dfsg/otcl.c:575:34:  [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).
  proc->clientData = (ClientData)strcpy(ckalloc(strlen(loader)+1), loader);
data/otcl-1.14+dfsg/otcl.c:633:2:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
	sprintf(s_otclProcName, "%s%d", s_otclProcPrefix, index);
data/otcl-1.14+dfsg/otcl.c:674:31:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  if (argv[2][0] != 0) (void) strcat((char *)nargs, argv[2]);
data/otcl-1.14+dfsg/otcl.c:1638:14:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
      (void) strcat(args, av[i]);
data/otcl-1.14+dfsg/otcl.c:458:6:  [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 msg[150];
data/otcl-1.14+dfsg/otcl.c:464:6:  [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(msg, "\n    (%.40s %.40s line %d)",
data/otcl-1.14+dfsg/otcl.c:500:6:  [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 msg[100];
data/otcl-1.14+dfsg/otcl.c:501:6:  [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(msg, "\n    (%.30s unknown line %d)",
data/otcl-1.14+dfsg/otcl.c:629: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 s_otclProcName[sizeof(s_otclProcPrefix) + 8];
data/otcl-1.14+dfsg/otcl.c:673:9:  [2] (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). Risk is low because the source is a constant string.
  (void)strcpy((char *)nargs, "self class proc ");
data/otcl-1.14+dfsg/otcl.c:674:39:  [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.
  if (argv[2][0] != 0) (void) strcat((char *)nargs, argv[2]);
data/otcl-1.14+dfsg/otcl.c:1606:22:  [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.
  Tcl_SetResult(in, (char *)argv[4], TCL_VOLATILE);
data/otcl-1.14+dfsg/otcl.c:1637:13:  [2] (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). Risk is low because the source is a constant string.
      (void)strcpy(args, "auto_load ");
data/otcl-1.14+dfsg/otcl.c:2105: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 tm[MAXTCLPROC];
data/otcl-1.14+dfsg/otcl.c:2231:9:  [2] (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). Risk is low because the source is a constant string.
  (void)strcpy(tm, "Object instproc array {opt ary args} {             \n");
data/otcl-1.14+dfsg/otcl.c:2232:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  $self instvar $ary                               \n");
data/otcl-1.14+dfsg/otcl.c:2233:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  eval array [list $opt] [list $ary] $args         \n");
data/otcl-1.14+dfsg/otcl.c:2234:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "}                                                  \n");
data/otcl-1.14+dfsg/otcl.c:2237:9:  [2] (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). Risk is low because the source is a constant string.
  (void)strcpy(tm, "Class instproc unknown {m args} {                  \n");
data/otcl-1.14+dfsg/otcl.c:2238:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  if {$m == {create}} then {                       \n");
data/otcl-1.14+dfsg/otcl.c:2239:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    error \"$self: unable to dispatch $m\"         \n");
data/otcl-1.14+dfsg/otcl.c:2240:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  }                                                \n");
data/otcl-1.14+dfsg/otcl.c:2241:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  eval [list $self] create [list $m] $args         \n");
data/otcl-1.14+dfsg/otcl.c:2242:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "}                                                  \n");
data/otcl-1.14+dfsg/otcl.c:2245:9:  [2] (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). Risk is low because the source is a constant string.
  (void)strcpy(tm, "proc otcl_load {obj file} {                        \n");
data/otcl-1.14+dfsg/otcl.c:2246:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "   global auto_index                               \n");
data/otcl-1.14+dfsg/otcl.c:2247:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "   source $file                                    \n");
data/otcl-1.14+dfsg/otcl.c:2248:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "   foreach i [array names auto_index             \\\n");
data/otcl-1.14+dfsg/otcl.c:2249:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "       [list $obj *proc *]] {                      \n");
data/otcl-1.14+dfsg/otcl.c:2250:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "     set type [lindex $i 1]                        \n");
data/otcl-1.14+dfsg/otcl.c:2251:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "     set meth [lindex $i 2]                        \n");
data/otcl-1.14+dfsg/otcl.c:2252:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "     if {[$obj info ${type}s $meth] == {}} then {  \n");
data/otcl-1.14+dfsg/otcl.c:2253:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "       $obj $type $meth {auto} $auto_index($i)     \n");
data/otcl-1.14+dfsg/otcl.c:2254:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "     }                                             \n");
data/otcl-1.14+dfsg/otcl.c:2255:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "   }                                               \n");
data/otcl-1.14+dfsg/otcl.c:2256:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, " }                                                 \n");
data/otcl-1.14+dfsg/otcl.c:2259:9:  [2] (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). Risk is low because the source is a constant string.
  (void)strcpy(tm, "proc otcl_mkindex {meta dir args} {                \n");
data/otcl-1.14+dfsg/otcl.c:2260:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set sp {[ 	]+}                            \n");
data/otcl-1.14+dfsg/otcl.c:2261:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set st {^[ 	]*}                            \n");
data/otcl-1.14+dfsg/otcl.c:2262:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set wd {([^ 	]+)}                           \n");
data/otcl-1.14+dfsg/otcl.c:2263:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  foreach creator $meta {                          \n");
data/otcl-1.14+dfsg/otcl.c:2264:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    lappend cp \"$st$creator${sp}create$sp$wd\"    \n");
data/otcl-1.14+dfsg/otcl.c:2265:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    lappend ap \"$st$creator$sp$wd\"               \n");
data/otcl-1.14+dfsg/otcl.c:2266:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  }                                                \n");
data/otcl-1.14+dfsg/otcl.c:2267:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  foreach method {proc instproc} {                 \n");
data/otcl-1.14+dfsg/otcl.c:2268:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    lappend mp \"$st$wd${sp}($method)$sp$wd\"      \n");
data/otcl-1.14+dfsg/otcl.c:2269:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  }                                                \n");
data/otcl-1.14+dfsg/otcl.c:2270:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  foreach cl [concat Class [Class info heritage]] {\n");
data/otcl-1.14+dfsg/otcl.c:2271:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    eval lappend meths [$cl info instcommands]     \n");
data/otcl-1.14+dfsg/otcl.c:2272:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  }                                                \n");
data/otcl-1.14+dfsg/otcl.c:2273:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set old [pwd]                                    \n");
data/otcl-1.14+dfsg/otcl.c:2274:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  cd $dir                                          \n");
data/otcl-1.14+dfsg/otcl.c:2275:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  append idx \"# Tcl autoload index file, \"       \n");
data/otcl-1.14+dfsg/otcl.c:2276:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  append idx \"version 2.0\\n\"                    \n");
data/otcl-1.14+dfsg/otcl.c:2277:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  append idx \"# otcl additions generated with \"  \n");
data/otcl-1.14+dfsg/otcl.c:2278:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  append idx \"\\\"otcl_mkindex [list $meta] \"    \n");
data/otcl-1.14+dfsg/otcl.c:2279:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  append idx \"[list $dir] $args\\\"\\n\"          \n");
data/otcl-1.14+dfsg/otcl.c:2280:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set oc 0                                         \n");
data/otcl-1.14+dfsg/otcl.c:2281:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set mc 0                                         \n");
data/otcl-1.14+dfsg/otcl.c:2282:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  foreach file [eval glob -nocomplain -- $args] {  \n");
data/otcl-1.14+dfsg/otcl.c:2283:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    if {[catch {set f [open $file]} msg]} then {   \n");
data/otcl-1.14+dfsg/otcl.c:2284:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      catch {close $f}                             \n");
data/otcl-1.14+dfsg/otcl.c:2285:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      cd $old                                      \n");
data/otcl-1.14+dfsg/otcl.c:2286:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      error $msg                                   \n");
data/otcl-1.14+dfsg/otcl.c:2287:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    }                                              \n");
data/otcl-1.14+dfsg/otcl.c:2288:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    while {[gets $f line] >= 0} {                  \n");
data/otcl-1.14+dfsg/otcl.c:2289:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      foreach c $cp {                              \n");
data/otcl-1.14+dfsg/otcl.c:2290:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	    if {[regexp $c $line x obj]==1 &&          \n");
data/otcl-1.14+dfsg/otcl.c:2291:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        [string index $obj 0]!={$}} then {     \n");
data/otcl-1.14+dfsg/otcl.c:2292:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	      incr oc                                  \n");
data/otcl-1.14+dfsg/otcl.c:2293:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	      append idx \"set auto_index($obj) \"     \n");
data/otcl-1.14+dfsg/otcl.c:2294:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	      append idx \"\\\"otcl_load $obj \"       \n");
data/otcl-1.14+dfsg/otcl.c:2295:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "          append idx \"\\$dir/$file\\\"\\n\"       \n");
data/otcl-1.14+dfsg/otcl.c:2296:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	    }                                          \n");
data/otcl-1.14+dfsg/otcl.c:2297:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	  }                                            \n");
data/otcl-1.14+dfsg/otcl.c:2298:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      foreach a $ap {                              \n");
data/otcl-1.14+dfsg/otcl.c:2299:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	    if {[regexp $a $line x obj]==1 &&          \n");
data/otcl-1.14+dfsg/otcl.c:2300:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        [string index $obj 0]!={$} &&          \n");
data/otcl-1.14+dfsg/otcl.c:2301:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        [lsearch -exact $meths $obj]==-1} {    \n");
data/otcl-1.14+dfsg/otcl.c:2302:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	      incr oc                                  \n");
data/otcl-1.14+dfsg/otcl.c:2303:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	      append idx \"set auto_index($obj) \"     \n");
data/otcl-1.14+dfsg/otcl.c:2304:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	      append idx \"\\\"otcl_load $obj \"       \n");
data/otcl-1.14+dfsg/otcl.c:2305:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "          append idx \"\\$dir/$file\\\"\\n\"       \n");
data/otcl-1.14+dfsg/otcl.c:2306:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	    }                                          \n");
data/otcl-1.14+dfsg/otcl.c:2307:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	  }                                            \n");
data/otcl-1.14+dfsg/otcl.c:2308:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      foreach m $mp {                              \n");
data/otcl-1.14+dfsg/otcl.c:2309:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	    if {[regexp $m $line x obj ty pr]==1 &&    \n");
data/otcl-1.14+dfsg/otcl.c:2310:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        [string index $obj 0]!={$} &&          \n");
data/otcl-1.14+dfsg/otcl.c:2311:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        [string index $pr 0]!={$}} then {      \n");
data/otcl-1.14+dfsg/otcl.c:2312:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        incr mc                                \n");
data/otcl-1.14+dfsg/otcl.c:2313:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        append idx \"set \\{auto_index($obj \" \n");
data/otcl-1.14+dfsg/otcl.c:2314:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        append idx \"$ty $pr)\\} \\\"source \" \n");
data/otcl-1.14+dfsg/otcl.c:2315:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	        append idx \"\\$dir/$file\\\"\\n\"     \n");
data/otcl-1.14+dfsg/otcl.c:2316:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "	    }                                          \n");
data/otcl-1.14+dfsg/otcl.c:2317:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "      }                                            \n");
data/otcl-1.14+dfsg/otcl.c:2318:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    }                                              \n");
data/otcl-1.14+dfsg/otcl.c:2319:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "    close $f                                       \n");
data/otcl-1.14+dfsg/otcl.c:2320:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  }                                                \n");
data/otcl-1.14+dfsg/otcl.c:2321:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  set t [open tclIndex a+]                         \n");
data/otcl-1.14+dfsg/otcl.c:2322:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  puts $t $idx nonewline                           \n");
data/otcl-1.14+dfsg/otcl.c:2323:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  close $t                                         \n");
data/otcl-1.14+dfsg/otcl.c:2324:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  cd $old                                          \n");
data/otcl-1.14+dfsg/otcl.c:2325:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "  return \"$oc objects, $mc methods\"              \n");
data/otcl-1.14+dfsg/otcl.c:2326:9:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
  (void)strcat(tm, "}                                                  \n");
data/otcl-1.14+dfsg/otclAppInit.c:102: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 val[20];
data/otcl-1.14+dfsg/otclAppInit.c:110:9:  [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.
  (void)sprintf(val, "%d", total);
data/otcl-1.14+dfsg/otcl.c:45: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).
    strcpy((char*)ckalloc(strlen(B)+1), B);\
data/otcl-1.14+dfsg/otcl.c:575:49:  [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).
  proc->clientData = (ClientData)strcpy(ckalloc(strlen(loader)+1), loader);
data/otcl-1.14+dfsg/otcl.c:656:48:  [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).
  CONST84 char* nargs = (CONST84 char*)ckalloc(strlen("self class proc ")+strlen(argv[2])+1);
data/otcl-1.14+dfsg/otcl.c:656:75:  [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).
  CONST84 char* nargs = (CONST84 char*)ckalloc(strlen("self class proc ")+strlen(argv[2])+1);
data/otcl-1.14+dfsg/otcl.c:1636:35:  [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).
      char* args = (char*)ckalloc(strlen("auto_load ")+strlen(av[i])+1);
data/otcl-1.14+dfsg/otcl.c:1636:56:  [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).
      char* args = (char*)ckalloc(strlen("auto_load ")+strlen(av[i])+1);

ANALYSIS SUMMARY:

Hits = 113
Lines analyzed = 2820 in approximately 0.13 seconds (21509 lines/second)
Physical Source Lines of Code (SLOC) = 1951
Hits@level = [0]   0 [1]   6 [2] 102 [3]   0 [4]   5 [5]   0
Hits@level+ = [0+] 113 [1+] 113 [2+] 107 [3+]   5 [4+]   5 [5+]   0
Hits/KSLOC@level+ = [0+] 57.919 [1+] 57.919 [2+] 54.8437 [3+] 2.56279 [4+] 2.56279 [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.