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/fauhdlc-20180504/interpreter/signals.h Examining data/fauhdlc-20180504/interpreter/signals.c Examining data/fauhdlc-20180504/interpreter/glue/glue-log.c Examining data/fauhdlc-20180504/interpreter/glue/glue-vhdl.c Examining data/fauhdlc-20180504/interpreter/glue/glue-log.h Examining data/fauhdlc-20180504/interpreter/glue/glue-main.h Examining data/fauhdlc-20180504/interpreter/glue/glue-main.c Examining data/fauhdlc-20180504/interpreter/glue/glue-vhdl.h Examining data/fauhdlc-20180504/interpreter/fauhdli_private.h Examining data/fauhdlc-20180504/interpreter/fauhdli.c Examining data/fauhdlc-20180504/interpreter/lookup_symbols.c Examining data/fauhdlc-20180504/interpreter/kernel.h Examining data/fauhdlc-20180504/interpreter/vhdl_sched.h Examining data/fauhdlc-20180504/interpreter/util/list.c Examining data/fauhdlc-20180504/interpreter/util/fauhdlstring.h Examining data/fauhdlc-20180504/interpreter/util/slset.h Examining data/fauhdlc-20180504/interpreter/util/list.h Examining data/fauhdlc-20180504/interpreter/util/slset.c Examining data/fauhdlc-20180504/interpreter/util/fauhdlstring.c Examining data/fauhdlc-20180504/interpreter/kernel.c Examining data/fauhdlc-20180504/interpreter/trace.c Examining data/fauhdlc-20180504/interpreter/lookup_symbols.h Examining data/fauhdlc-20180504/interpreter/vhdl_sched.c Examining data/fauhdlc-20180504/interpreter/interpreter.c Examining data/fauhdlc-20180504/interpreter/fauhdli.h Examining data/fauhdlc-20180504/interpreter/trace.h Examining data/fauhdlc-20180504/interpreter/log.h Examining data/fauhdlc-20180504/interpreter/log.c Examining data/fauhdlc-20180504/frontend/newparser/FAUhdlScanner.hpp Examining data/fauhdlc-20180504/frontend/newparser/ParserDriver.cpp Examining data/fauhdlc-20180504/frontend/newparser/ParserDriver.hpp Examining data/fauhdlc-20180504/frontend/visitor/ResolveAggregates.hpp Examining data/fauhdlc-20180504/frontend/visitor/LookupTypes.hpp Examining data/fauhdlc-20180504/frontend/visitor/UnconstraintBounds.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCTypes.cpp Examining data/fauhdlc-20180504/frontend/visitor/ResolveTypes.cpp Examining data/fauhdlc-20180504/frontend/visitor/CheckLoops.cpp Examining data/fauhdlc-20180504/frontend/visitor/CheckAccessMode.cpp Examining data/fauhdlc-20180504/frontend/visitor/SetPathName.cpp Examining data/fauhdlc-20180504/frontend/visitor/ConstantPropagation.hpp Examining data/fauhdlc-20180504/frontend/visitor/SetPathName.hpp Examining data/fauhdlc-20180504/frontend/visitor/ResolveSymbols.cpp Examining data/fauhdlc-20180504/frontend/visitor/WaitConditions.cpp Examining data/fauhdlc-20180504/frontend/visitor/GenCode.cpp Examining data/fauhdlc-20180504/frontend/visitor/TransformSigAssign.hpp Examining data/fauhdlc-20180504/frontend/visitor/TransformSigAssign.cpp Examining data/fauhdlc-20180504/frontend/visitor/DotVisitor.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCRegisterSet.hpp Examining data/fauhdlc-20180504/frontend/visitor/WarnUnused.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCBuiltins.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCArrays.hpp Examining data/fauhdlc-20180504/frontend/visitor/GatherImplicits.hpp Examining data/fauhdlc-20180504/frontend/visitor/GenCode.hpp Examining data/fauhdlc-20180504/frontend/visitor/SimplifyExpressions.cpp Examining data/fauhdlc-20180504/frontend/visitor/GCLoops.cpp Examining data/fauhdlc-20180504/frontend/visitor/ResolveSymbols.hpp Examining data/fauhdlc-20180504/frontend/visitor/UnconstraintBounds.cpp Examining data/fauhdlc-20180504/frontend/visitor/TopDownVisitor.hpp Examining data/fauhdlc-20180504/frontend/visitor/CheckLoops.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCRegisterSet.cpp Examining data/fauhdlc-20180504/frontend/visitor/NullVisitor.cpp Examining data/fauhdlc-20180504/frontend/visitor/NullVisitor.hpp Examining data/fauhdlc-20180504/frontend/visitor/NormalizeAssocLists.cpp Examining data/fauhdlc-20180504/frontend/visitor/CheckAccessMode.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCArrays.cpp Examining data/fauhdlc-20180504/frontend/visitor/DotVisitor.cpp Examining data/fauhdlc-20180504/frontend/visitor/ConstantPropagation.cpp Examining data/fauhdlc-20180504/frontend/visitor/ResolveTypes.hpp Examining data/fauhdlc-20180504/frontend/visitor/TopDownVisitor.cpp Examining data/fauhdlc-20180504/frontend/visitor/WaitConditions.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCLoops.hpp Examining data/fauhdlc-20180504/frontend/visitor/GCBuiltins.cpp Examining data/fauhdlc-20180504/frontend/visitor/SimplifyExpressions.hpp Examining data/fauhdlc-20180504/frontend/visitor/WarnUnused.cpp Examining data/fauhdlc-20180504/frontend/visitor/GCTypes.hpp Examining data/fauhdlc-20180504/frontend/visitor/ResolveAggregates.cpp Examining data/fauhdlc-20180504/frontend/visitor/GatherImplicits.cpp Examining data/fauhdlc-20180504/frontend/visitor/NormalizeAssocLists.hpp Examining data/fauhdlc-20180504/frontend/visitor/Visitor.hpp Examining data/fauhdlc-20180504/frontend/reporting/TypeError.hpp Examining data/fauhdlc-20180504/frontend/reporting/ErrorRegistry.hpp Examining data/fauhdlc-20180504/frontend/reporting/AmbiguousTypes.cpp Examining data/fauhdlc-20180504/frontend/reporting/ErrorRegistry.cpp Examining data/fauhdlc-20180504/frontend/reporting/TypeMismatch.hpp Examining data/fauhdlc-20180504/frontend/reporting/CompileError.cpp Examining data/fauhdlc-20180504/frontend/reporting/TypeError.cpp Examining data/fauhdlc-20180504/frontend/reporting/CompileError.hpp Examining data/fauhdlc-20180504/frontend/reporting/DuplicateName.hpp Examining data/fauhdlc-20180504/frontend/reporting/TypeMismatch.cpp Examining data/fauhdlc-20180504/frontend/reporting/AmbiguousTypes.hpp Examining data/fauhdlc-20180504/frontend/reporting/SyntaxError.hpp Examining data/fauhdlc-20180504/frontend/reporting/UndefinedSymbol.cpp Examining data/fauhdlc-20180504/frontend/reporting/UndefinedSymbol.hpp Examining data/fauhdlc-20180504/frontend/reporting/DuplicateName.cpp Examining data/fauhdlc-20180504/frontend/ast/SeqStat.hpp Examining data/fauhdlc-20180504/frontend/ast/NodeFactory.hpp Examining data/fauhdlc-20180504/frontend/ast/NullStat.hpp Examining data/fauhdlc-20180504/frontend/ast/TypeConversion.hpp Examining data/fauhdlc-20180504/frontend/ast/UnconstrainedArrayType.hpp Examining data/fauhdlc-20180504/frontend/ast/SymbolDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/SignalDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/NodeFactory.cpp Examining data/fauhdlc-20180504/frontend/ast/ValDeclaration.cpp Examining data/fauhdlc-20180504/frontend/ast/IfStat.hpp Examining data/fauhdlc-20180504/frontend/ast/CompInstStat.hpp Examining data/fauhdlc-20180504/frontend/ast/WaveFormElem.hpp Examining data/fauhdlc-20180504/frontend/ast/AttributeSpecification.hpp Examining data/fauhdlc-20180504/frontend/ast/Library.hpp Examining data/fauhdlc-20180504/frontend/ast/WhileLoopStat.hpp Examining data/fauhdlc-20180504/frontend/ast/SubtypeIndication.hpp Examining data/fauhdlc-20180504/frontend/ast/Name.cpp Examining data/fauhdlc-20180504/frontend/ast/AstNode.hpp Examining data/fauhdlc-20180504/frontend/ast/ValDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/LibraryList.hpp Examining data/fauhdlc-20180504/frontend/ast/ConstantDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/VarDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/ConditionedStat.hpp Examining data/fauhdlc-20180504/frontend/ast/ConstInteger.hpp Examining data/fauhdlc-20180504/frontend/ast/Slice.hpp Examining data/fauhdlc-20180504/frontend/ast/Expression.cpp Examining data/fauhdlc-20180504/frontend/ast/ExitStat.hpp Examining data/fauhdlc-20180504/frontend/ast/AttributableDeclaration.cpp Examining data/fauhdlc-20180504/frontend/ast/LoopStat.hpp Examining data/fauhdlc-20180504/frontend/ast/RecordType.cpp Examining data/fauhdlc-20180504/frontend/ast/ConstReal.hpp Examining data/fauhdlc-20180504/frontend/ast/SimpleName.cpp Examining data/fauhdlc-20180504/frontend/ast/RangeConstraintType.hpp Examining data/fauhdlc-20180504/frontend/ast/ForLoopStat.hpp Examining data/fauhdlc-20180504/frontend/ast/LibUnit.hpp Examining data/fauhdlc-20180504/frontend/ast/AttributeSpecification.cpp Examining data/fauhdlc-20180504/frontend/ast/AttributeDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/Types.cpp Examining data/fauhdlc-20180504/frontend/ast/TypeDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/Aggregate.hpp Examining data/fauhdlc-20180504/frontend/ast/ReturnStat.hpp Examining data/fauhdlc-20180504/frontend/ast/DiscreteRange.hpp Examining data/fauhdlc-20180504/frontend/ast/Package.hpp Examining data/fauhdlc-20180504/frontend/ast/PrefixedName.hpp Examining data/fauhdlc-20180504/frontend/ast/CaseAlternative.hpp Examining data/fauhdlc-20180504/frontend/ast/VarAssignStat.hpp Examining data/fauhdlc-20180504/frontend/ast/Location.cpp Examining data/fauhdlc-20180504/frontend/ast/EnumerationType.hpp Examining data/fauhdlc-20180504/frontend/ast/SimpleName.hpp Examining data/fauhdlc-20180504/frontend/ast/SubtypeIndication.cpp Examining data/fauhdlc-20180504/frontend/ast/Subscript.hpp Examining data/fauhdlc-20180504/frontend/ast/Name.hpp Examining data/fauhdlc-20180504/frontend/ast/RecordType.hpp Examining data/fauhdlc-20180504/frontend/ast/Architecture.hpp Examining data/fauhdlc-20180504/frontend/ast/CondalSigAssign.hpp Examining data/fauhdlc-20180504/frontend/ast/RecordTypeElement.hpp Examining data/fauhdlc-20180504/frontend/ast/ConcurrentStat.hpp Examining data/fauhdlc-20180504/frontend/ast/AttributeDeclaration.cpp Examining data/fauhdlc-20180504/frontend/ast/Process.hpp Examining data/fauhdlc-20180504/frontend/ast/WaitStat.hpp Examining data/fauhdlc-20180504/frontend/ast/SigAssignStat.hpp Examining data/fauhdlc-20180504/frontend/ast/PhysicalTypeUnit.hpp Examining data/fauhdlc-20180504/frontend/ast/Location.hpp Examining data/fauhdlc-20180504/frontend/ast/Entity.hpp Examining data/fauhdlc-20180504/frontend/ast/Others.hpp Examining data/fauhdlc-20180504/frontend/ast/ConstInteger.cpp Examining data/fauhdlc-20180504/frontend/ast/Expression.hpp Examining data/fauhdlc-20180504/frontend/ast/ConstArray.hpp Examining data/fauhdlc-20180504/frontend/ast/TemporaryName.hpp Examining data/fauhdlc-20180504/frontend/ast/SelectedName.hpp Examining data/fauhdlc-20180504/frontend/ast/ProcedureDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/ElementAssociation.hpp Examining data/fauhdlc-20180504/frontend/ast/FunctionDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/Types.hpp Examining data/fauhdlc-20180504/frontend/ast/AttributeName.hpp Examining data/fauhdlc-20180504/frontend/ast/SubprogBody.hpp Examining data/fauhdlc-20180504/frontend/ast/AssociationElement.hpp Examining data/fauhdlc-20180504/frontend/ast/AssertStat.hpp Examining data/fauhdlc-20180504/frontend/ast/AttributableDeclaration.hpp Examining data/fauhdlc-20180504/frontend/ast/NextStat.hpp Examining data/fauhdlc-20180504/frontend/ast/AstNode.cpp Examining data/fauhdlc-20180504/frontend/ast/CaseStat.hpp Examining data/fauhdlc-20180504/frontend/ast/SymbolDeclaration.cpp Examining data/fauhdlc-20180504/frontend/ast/PackageBody.hpp Examining data/fauhdlc-20180504/frontend/ast/PhysicalType.hpp Examining data/fauhdlc-20180504/frontend/ast/ProcCallStat.hpp Examining data/fauhdlc-20180504/frontend/ast/Callable.hpp Examining data/fauhdlc-20180504/frontend/ast/PhysicalType.cpp Examining data/fauhdlc-20180504/frontend/ast/FunctionCall.hpp Examining data/fauhdlc-20180504/frontend/ast/DiscreteRange.cpp Examining data/fauhdlc-20180504/frontend/misc/Driver.cpp Examining data/fauhdlc-20180504/frontend/misc/NameLookup.hpp Examining data/fauhdlc-20180504/frontend/misc/Symbol.hpp Examining data/fauhdlc-20180504/frontend/misc/DeclarativeRegion.cpp Examining data/fauhdlc-20180504/frontend/misc/RegisterBuiltins.cpp Examining data/fauhdlc-20180504/frontend/misc/RangeSet.hpp Examining data/fauhdlc-20180504/frontend/misc/StackTrace.cpp Examining data/fauhdlc-20180504/frontend/misc/BuiltinSymbolTable.cpp Examining data/fauhdlc-20180504/frontend/misc/RegisterBuiltins.hpp Examining data/fauhdlc-20180504/frontend/misc/DeclarativeRegion.hpp Examining data/fauhdlc-20180504/frontend/misc/BuiltinFunction.hpp Examining data/fauhdlc-20180504/frontend/misc/Compiler.hpp Examining data/fauhdlc-20180504/frontend/misc/Symbol.cpp Examining data/fauhdlc-20180504/frontend/misc/SymbolTable.hpp Examining data/fauhdlc-20180504/frontend/misc/NameLookup.cpp Examining data/fauhdlc-20180504/frontend/misc/StackTrace.hpp Examining data/fauhdlc-20180504/frontend/misc/Driver.hpp Examining data/fauhdlc-20180504/frontend/misc/SymbolTable.cpp Examining data/fauhdlc-20180504/frontend/misc/RangeSet.cpp Examining data/fauhdlc-20180504/frontend/misc/BuiltinSymbolTable.hpp Examining data/fauhdlc-20180504/util/mangle_names.c Examining data/fauhdlc-20180504/util/basetypes.h Examining data/fauhdlc-20180504/util/GarbageCollect.hpp Examining data/fauhdlc-20180504/util/MiscUtil.hpp Examining data/fauhdlc-20180504/util/mangle_names.h Examining data/fauhdlc-20180504/intermediate/container/CodeContainer.hpp Examining data/fauhdlc-20180504/intermediate/container/TypeElement.hpp Examining data/fauhdlc-20180504/intermediate/container/TypeFactory.hpp Examining data/fauhdlc-20180504/intermediate/container/LabelFactory.hpp Examining data/fauhdlc-20180504/intermediate/container/Data.hpp Examining data/fauhdlc-20180504/intermediate/container/LabelFactory.cpp Examining data/fauhdlc-20180504/intermediate/container/Label.hpp Examining data/fauhdlc-20180504/intermediate/container/TypeFactory.cpp Examining data/fauhdlc-20180504/intermediate/container/Type.hpp Examining data/fauhdlc-20180504/intermediate/visitor/StandardTraversal.cpp Examining data/fauhdlc-20180504/intermediate/visitor/LookupSymbols.hpp Examining data/fauhdlc-20180504/intermediate/visitor/GenCCode.hpp Examining data/fauhdlc-20180504/intermediate/visitor/LookupSymbols.cpp Examining data/fauhdlc-20180504/intermediate/visitor/PrintCode.hpp Examining data/fauhdlc-20180504/intermediate/visitor/PrintCode.cpp Examining data/fauhdlc-20180504/intermediate/visitor/GenCCode.cpp Examining data/fauhdlc-20180504/intermediate/visitor/StandardTraversal.hpp Examining data/fauhdlc-20180504/intermediate/visitor/Visitor.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Sub.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Je.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/GetParam.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Mov.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/OpCode.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Log.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/GetSig.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Proc.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/IMul.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/AOffset.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Return.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Suspend.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Call.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Abort.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Div.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/SetParam.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/BeginTransfer.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Add.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/ROffset.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Jne.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/EndTransfer.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Jb.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Update.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/WakeAt.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Connect.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Jbe.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/GetSimTime.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/Jmp.hpp Examining data/fauhdlc-20180504/intermediate/opcodes/WakeOn.hpp Examining data/fauhdlc-20180504/intermediate/operands/ImmediateOperand.cpp Examining data/fauhdlc-20180504/intermediate/operands/Register.hpp Examining data/fauhdlc-20180504/intermediate/operands/RegisterFactory.hpp Examining data/fauhdlc-20180504/intermediate/operands/ImmediateOperand.hpp Examining data/fauhdlc-20180504/intermediate/operands/Reference.hpp Examining data/fauhdlc-20180504/intermediate/operands/IndirectOperand.hpp Examining data/fauhdlc-20180504/intermediate/operands/Operand.hpp Examining data/fauhdlc-20180504/intermediate/operands/RegisterFactory.cpp Examining data/fauhdlc-20180504/intermediate/Node.hpp Examining data/fauhdlc-20180504/lib/ckernel.c Examining data/fauhdlc-20180504/lib/runtime.h Examining data/fauhdlc-20180504/compiler/FAUhdlc.hpp Examining data/fauhdlc-20180504/compiler/FAUhdlc.cpp FINAL RESULTS: data/fauhdlc-20180504/frontend/misc/StackTrace.cpp:99:7: [4] (shell) popen: 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. fp = popen(cmd, "r"); data/fauhdlc-20180504/interpreter/glue/glue-log.c:61:2: [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). strcat(buf, type); data/fauhdlc-20180504/interpreter/glue/glue-log.c:64:3: [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). strcat(buf, name); data/fauhdlc-20180504/interpreter/glue/glue-log.c:69:2: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. vsprintf(buf + strlen(buf), fmt, args); data/fauhdlc-20180504/interpreter/glue/glue-log.h:38:26: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. __attribute__ ((format (printf, 4, 5))); data/fauhdlc-20180504/interpreter/kernel.c:471:8: [4] (format) snprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. n = snprintf(buf, sizeof(buf), "%s__%" PRIi64, name, data/fauhdlc-20180504/interpreter/kernel.c:497:7: [4] (format) snprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. n = snprintf(buf, sizeof(buf), "%s__%" PRIi64, name, cnt); data/fauhdlc-20180504/compiler/FAUhdlc.cpp:101:7: [3] (buffer) getopt_long: Some older implementations do not protect against internal buffer overflows (CWE-120, CWE-20). Check implementation on installation, or limit the size of all string inputs. c = getopt_long(argc, argv, "-pd:c:l:o:hW:C:f", l_opts, NULL); data/fauhdlc-20180504/interpreter/interpreter.c:127:7: [3] (buffer) getopt_long: Some older implementations do not protect against internal buffer overflows (CWE-120, CWE-20). Check implementation on installation, or limit the size of all string inputs. c = getopt_long(argc, argv, "s:o:dt:", l_opts, NULL); data/fauhdlc-20180504/lib/ckernel.c:98:7: [3] (buffer) getopt_long: Some older implementations do not protect against internal buffer overflows (CWE-120, CWE-20). Check implementation on installation, or limit the size of all string inputs. c = getopt_long(argc, argv, "s:o:t:h", l_opts, NULL); data/fauhdlc-20180504/compiler/FAUhdlc.cpp:284:10: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). stream.open(this->dotParseFile, std::ofstream::out); data/fauhdlc-20180504/compiler/FAUhdlc.cpp:347:10: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). stream.open(this->dotConstFile, std::ofstream::out); data/fauhdlc-20180504/compiler/FAUhdlc.cpp:455:6: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). out.open(this->outputFile, std::ofstream::out); data/fauhdlc-20180504/compiler/FAUhdlc.cpp:477:6: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). out.open(this->cFile, std::ofstream::out); data/fauhdlc-20180504/frontend/ast/SymbolDeclaration.cpp:18:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buffer[2048]; data/fauhdlc-20180504/frontend/misc/StackTrace.cpp:91:9: [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 cmd[4096]; data/fauhdlc-20180504/frontend/newparser/ParserDriver.cpp:98:11: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). inStream.open(filename.c_str(), std::ifstream::in); data/fauhdlc-20180504/frontend/newparser/ParserDriver.cpp:292: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. const char lookupHex[16][5] = { data/fauhdlc-20180504/frontend/newparser/ParserDriver.cpp:329: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. const char lookupOctal[8][4] = { data/fauhdlc-20180504/interpreter/fauhdli.c:308:9: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). yyin = fopen(file_name, "r"); data/fauhdlc-20180504/interpreter/glue/glue-log.c:36:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buffer[1024]; data/fauhdlc-20180504/interpreter/glue/glue-log.c:52:26: [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. case FAUHDLI_LOG_FATAL: strcpy(buf, "FATAL:"); break; data/fauhdlc-20180504/interpreter/glue/glue-log.c:53:29: [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. case FAUHDLI_LOG_CRITICAL: strcpy(buf, "CRITICAL:"); break; data/fauhdlc-20180504/interpreter/glue/glue-log.c:54:26: [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. case FAUHDLI_LOG_ERROR: strcpy(buf, "ERROR:"); break; data/fauhdlc-20180504/interpreter/glue/glue-log.c:55:28: [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. case FAUHDLI_LOG_WARNING: strcpy(buf, "WARNING:"); break; data/fauhdlc-20180504/interpreter/glue/glue-log.c:56:25: [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. case FAUHDLI_LOG_INFO: strcpy(buf, "INFO:"); break; data/fauhdlc-20180504/interpreter/glue/glue-log.c:57:26: [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. case FAUHDLI_LOG_DEBUG: strcpy(buf, "DEBUG:"); break; data/fauhdlc-20180504/interpreter/glue/glue-log.c:66:2: [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. strcat(buf, ": "); data/fauhdlc-20180504/interpreter/kernel.c:231:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[2048]; data/fauhdlc-20180504/interpreter/kernel.c:451:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[8192]; data/fauhdlc-20180504/interpreter/kernel.c:533:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[8192]; data/fauhdlc-20180504/interpreter/kernel.c:642:9: [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 buf[8192]; data/fauhdlc-20180504/interpreter/kernel.c:1395:9: [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 demangled[2048]; data/fauhdlc-20180504/interpreter/kernel.c:1447:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[8192]; data/fauhdlc-20180504/interpreter/kernel.c:1471:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[8192]; data/fauhdlc-20180504/interpreter/kernel.c:2393:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[2048]; data/fauhdlc-20180504/interpreter/kernel.c:2662:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[2048]; data/fauhdlc-20180504/interpreter/log.c:36:9: [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 demangled[2048]; data/fauhdlc-20180504/interpreter/trace.c:42:9: [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 ret[65] = { '\0' }; data/fauhdlc-20180504/interpreter/trace.c:97:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[4096]; data/fauhdlc-20180504/interpreter/trace.c:281:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). ret->output = fopen(trace_file, "w"); data/fauhdlc-20180504/interpreter/util/fauhdlstring.c:24:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(ret, src, len); data/fauhdlc-20180504/lib/ckernel.c:51:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[2048]; data/fauhdlc-20180504/util/mangle_names.c:49: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(s, rep, rep_len); data/fauhdlc-20180504/interpreter/glue/glue-log.c:60:2: [1] (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 character. strcat(buf, " "); data/fauhdlc-20180504/interpreter/glue/glue-log.c:63:3: [1] (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 character. strcat(buf, " "); data/fauhdlc-20180504/interpreter/glue/glue-log.c:69:17: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). vsprintf(buf + strlen(buf), fmt, args); data/fauhdlc-20180504/interpreter/kernel.c:631:6: [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). if (strlen(s->name) == 0) { data/fauhdlc-20180504/interpreter/kernel.c:1474:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(buf, n, sizeof(buf)); data/fauhdlc-20180504/interpreter/kernel.c:1483:8: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sz = strlen(buf); data/fauhdlc-20180504/interpreter/trace.c:167: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). assert(sig->value.univ_int < strlen(std_logic_vals)); data/fauhdlc-20180504/interpreter/util/fauhdlstring.c:19:15: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t len = strlen(src) + 1; data/fauhdlc-20180504/util/mangle_names.c:28:12: [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). tok_len = strlen(tok); data/fauhdlc-20180504/util/mangle_names.c:29:12: [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). rep_len = strlen(rep); data/fauhdlc-20180504/util/mangle_names.c:41:10: [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). cnt = strlen(remainder) + 1; data/fauhdlc-20180504/util/mangle_names.c:69:9: [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 strlen(dst); ANALYSIS SUMMARY: Hits = 56 Lines analyzed = 49420 in approximately 1.11 seconds (44479 lines/second) Physical Source Lines of Code (SLOC) = 29265 Hits@level = [0] 48 [1] 12 [2] 34 [3] 3 [4] 7 [5] 0 Hits@level+ = [0+] 104 [1+] 56 [2+] 44 [3+] 10 [4+] 7 [5+] 0 Hits/KSLOC@level+ = [0+] 3.55373 [1+] 1.91355 [2+] 1.5035 [3+] 0.341705 [4+] 0.239194 [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.