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.