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/pulseview-0.4.2/pv/strnatcmp.hpp Examining data/pulseview-0.4.2/pv/application.hpp Examining data/pulseview-0.4.2/pv/views/viewbase.cpp Examining data/pulseview-0.4.2/pv/views/decoder_binary/QHexView.cpp Examining data/pulseview-0.4.2/pv/views/decoder_binary/QHexView.hpp Examining data/pulseview-0.4.2/pv/views/decoder_binary/view.cpp Examining data/pulseview-0.4.2/pv/views/decoder_binary/view.hpp Examining data/pulseview-0.4.2/pv/views/viewbase.hpp Examining data/pulseview-0.4.2/pv/views/trace/signal.hpp Examining data/pulseview-0.4.2/pv/views/trace/trace.hpp Examining data/pulseview-0.4.2/pv/views/trace/standardbar.cpp Examining data/pulseview-0.4.2/pv/views/trace/tracepalette.hpp Examining data/pulseview-0.4.2/pv/views/trace/viewitemowner.cpp Examining data/pulseview-0.4.2/pv/views/trace/header.hpp Examining data/pulseview-0.4.2/pv/views/trace/tracetreeitemowner.cpp Examining data/pulseview-0.4.2/pv/views/trace/decodetrace.cpp Examining data/pulseview-0.4.2/pv/views/trace/logicsignal.hpp Examining data/pulseview-0.4.2/pv/views/trace/viewwidget.hpp Examining data/pulseview-0.4.2/pv/views/trace/tracetreeitem.cpp Examining data/pulseview-0.4.2/pv/views/trace/cursor.cpp Examining data/pulseview-0.4.2/pv/views/trace/analogsignal.hpp Examining data/pulseview-0.4.2/pv/views/trace/flag.hpp Examining data/pulseview-0.4.2/pv/views/trace/cursorpair.hpp Examining data/pulseview-0.4.2/pv/views/trace/tracegroup.cpp Examining data/pulseview-0.4.2/pv/views/trace/cursor.hpp Examining data/pulseview-0.4.2/pv/views/trace/timemarker.cpp Examining data/pulseview-0.4.2/pv/views/trace/timeitem.cpp Examining data/pulseview-0.4.2/pv/views/trace/marginwidget.cpp Examining data/pulseview-0.4.2/pv/views/trace/viewitempaintparams.hpp Examining data/pulseview-0.4.2/pv/views/trace/timemarker.hpp Examining data/pulseview-0.4.2/pv/views/trace/signal.cpp Examining data/pulseview-0.4.2/pv/views/trace/triggermarker.cpp Examining data/pulseview-0.4.2/pv/views/trace/tracepalette.cpp Examining data/pulseview-0.4.2/pv/views/trace/viewwidget.cpp Examining data/pulseview-0.4.2/pv/views/trace/trace.cpp Examining data/pulseview-0.4.2/pv/views/trace/viewitempaintparams.cpp Examining data/pulseview-0.4.2/pv/views/trace/viewitem.hpp Examining data/pulseview-0.4.2/pv/views/trace/ruler.hpp Examining data/pulseview-0.4.2/pv/views/trace/view.cpp Examining data/pulseview-0.4.2/pv/views/trace/flag.cpp Examining data/pulseview-0.4.2/pv/views/trace/header.cpp Examining data/pulseview-0.4.2/pv/views/trace/tracetreeitemowner.hpp Examining data/pulseview-0.4.2/pv/views/trace/marginwidget.hpp Examining data/pulseview-0.4.2/pv/views/trace/timeitem.hpp Examining data/pulseview-0.4.2/pv/views/trace/logicsignal.cpp Examining data/pulseview-0.4.2/pv/views/trace/tracegroup.hpp Examining data/pulseview-0.4.2/pv/views/trace/viewitemowner.hpp Examining data/pulseview-0.4.2/pv/views/trace/triggermarker.hpp Examining data/pulseview-0.4.2/pv/views/trace/viewitemiterator.hpp Examining data/pulseview-0.4.2/pv/views/trace/view.hpp Examining data/pulseview-0.4.2/pv/views/trace/tracetreeitem.hpp Examining data/pulseview-0.4.2/pv/views/trace/ruler.cpp Examining data/pulseview-0.4.2/pv/views/trace/cursorpair.cpp Examining data/pulseview-0.4.2/pv/views/trace/analogsignal.cpp Examining data/pulseview-0.4.2/pv/views/trace/viewitem.cpp Examining data/pulseview-0.4.2/pv/views/trace/viewport.cpp Examining data/pulseview-0.4.2/pv/views/trace/decodetrace.hpp Examining data/pulseview-0.4.2/pv/views/trace/viewport.hpp Examining data/pulseview-0.4.2/pv/views/trace/standardbar.hpp Examining data/pulseview-0.4.2/pv/devicemanager.cpp Examining data/pulseview-0.4.2/pv/application.cpp Examining data/pulseview-0.4.2/pv/dialogs/settings.cpp Examining data/pulseview-0.4.2/pv/dialogs/connect.cpp Examining data/pulseview-0.4.2/pv/dialogs/storeprogress.cpp Examining data/pulseview-0.4.2/pv/dialogs/inputoutputoptions.cpp Examining data/pulseview-0.4.2/pv/dialogs/settings.hpp Examining data/pulseview-0.4.2/pv/dialogs/inputoutputoptions.hpp Examining data/pulseview-0.4.2/pv/dialogs/storeprogress.hpp Examining data/pulseview-0.4.2/pv/dialogs/connect.hpp Examining data/pulseview-0.4.2/pv/data/signalbase.cpp Examining data/pulseview-0.4.2/pv/data/decodesignal.cpp Examining data/pulseview-0.4.2/pv/data/decode/row.hpp Examining data/pulseview-0.4.2/pv/data/decode/annotation.hpp Examining data/pulseview-0.4.2/pv/data/decode/decoder.hpp Examining data/pulseview-0.4.2/pv/data/decode/decoder.cpp Examining data/pulseview-0.4.2/pv/data/decode/annotation.cpp Examining data/pulseview-0.4.2/pv/data/decode/rowdata.cpp Examining data/pulseview-0.4.2/pv/data/decode/rowdata.hpp Examining data/pulseview-0.4.2/pv/data/decode/row.cpp Examining data/pulseview-0.4.2/pv/data/segment.hpp Examining data/pulseview-0.4.2/pv/data/signalbase.hpp Examining data/pulseview-0.4.2/pv/data/decodesignal.hpp Examining data/pulseview-0.4.2/pv/data/logicsegment.cpp Examining data/pulseview-0.4.2/pv/data/analog.cpp Examining data/pulseview-0.4.2/pv/data/analogsegment.hpp Examining data/pulseview-0.4.2/pv/data/logic.hpp Examining data/pulseview-0.4.2/pv/data/signaldata.hpp Examining data/pulseview-0.4.2/pv/data/segment.cpp Examining data/pulseview-0.4.2/pv/data/signaldata.cpp Examining data/pulseview-0.4.2/pv/data/analogsegment.cpp Examining data/pulseview-0.4.2/pv/data/logicsegment.hpp Examining data/pulseview-0.4.2/pv/data/logic.cpp Examining data/pulseview-0.4.2/pv/data/analog.hpp Examining data/pulseview-0.4.2/pv/globalsettings.hpp Examining data/pulseview-0.4.2/pv/globalsettings.cpp Examining data/pulseview-0.4.2/pv/storesession.hpp Examining data/pulseview-0.4.2/pv/devicemanager.hpp Examining data/pulseview-0.4.2/pv/prop/enum.hpp Examining data/pulseview-0.4.2/pv/prop/string.cpp Examining data/pulseview-0.4.2/pv/prop/int.cpp Examining data/pulseview-0.4.2/pv/prop/bool.hpp Examining data/pulseview-0.4.2/pv/prop/double.hpp Examining data/pulseview-0.4.2/pv/prop/enum.cpp Examining data/pulseview-0.4.2/pv/prop/property.cpp Examining data/pulseview-0.4.2/pv/prop/int.hpp Examining data/pulseview-0.4.2/pv/prop/bool.cpp Examining data/pulseview-0.4.2/pv/prop/property.hpp Examining data/pulseview-0.4.2/pv/prop/string.hpp Examining data/pulseview-0.4.2/pv/prop/double.cpp Examining data/pulseview-0.4.2/pv/session.cpp Examining data/pulseview-0.4.2/pv/mainwindow.cpp Examining data/pulseview-0.4.2/pv/toolbars/mainbar.hpp Examining data/pulseview-0.4.2/pv/toolbars/mainbar.cpp Examining data/pulseview-0.4.2/pv/binding/device.cpp Examining data/pulseview-0.4.2/pv/binding/binding.hpp Examining data/pulseview-0.4.2/pv/binding/inputoutput.cpp Examining data/pulseview-0.4.2/pv/binding/inputoutput.hpp Examining data/pulseview-0.4.2/pv/binding/decoder.hpp Examining data/pulseview-0.4.2/pv/binding/decoder.cpp Examining data/pulseview-0.4.2/pv/binding/binding.cpp Examining data/pulseview-0.4.2/pv/binding/device.hpp Examining data/pulseview-0.4.2/pv/util.cpp Examining data/pulseview-0.4.2/pv/widgets/decodergroupbox.cpp Examining data/pulseview-0.4.2/pv/widgets/popuptoolbutton.hpp Examining data/pulseview-0.4.2/pv/widgets/timestampspinbox.cpp Examining data/pulseview-0.4.2/pv/widgets/flowlayout.cpp Examining data/pulseview-0.4.2/pv/widgets/importmenu.hpp Examining data/pulseview-0.4.2/pv/widgets/sweeptimingwidget.hpp Examining data/pulseview-0.4.2/pv/widgets/flowlayout.hpp Examining data/pulseview-0.4.2/pv/widgets/popup.cpp Examining data/pulseview-0.4.2/pv/widgets/devicetoolbutton.cpp Examining data/pulseview-0.4.2/pv/widgets/sweeptimingwidget.cpp Examining data/pulseview-0.4.2/pv/widgets/colorbutton.cpp Examining data/pulseview-0.4.2/pv/widgets/exportmenu.hpp Examining data/pulseview-0.4.2/pv/widgets/colorpopup.hpp Examining data/pulseview-0.4.2/pv/widgets/timestampspinbox.hpp Examining data/pulseview-0.4.2/pv/widgets/popup.hpp Examining data/pulseview-0.4.2/pv/widgets/devicetoolbutton.hpp Examining data/pulseview-0.4.2/pv/widgets/importmenu.cpp Examining data/pulseview-0.4.2/pv/widgets/colorbutton.hpp Examining data/pulseview-0.4.2/pv/widgets/decodermenu.hpp Examining data/pulseview-0.4.2/pv/widgets/decodermenu.cpp Examining data/pulseview-0.4.2/pv/widgets/colorpopup.cpp Examining data/pulseview-0.4.2/pv/widgets/decodergroupbox.hpp Examining data/pulseview-0.4.2/pv/widgets/wellarray.cpp Examining data/pulseview-0.4.2/pv/widgets/exportmenu.cpp Examining data/pulseview-0.4.2/pv/widgets/wellarray.hpp Examining data/pulseview-0.4.2/pv/widgets/popuptoolbutton.cpp Examining data/pulseview-0.4.2/pv/mainwindow.hpp Examining data/pulseview-0.4.2/pv/session.hpp Examining data/pulseview-0.4.2/pv/storesession.cpp Examining data/pulseview-0.4.2/pv/subwindows/subwindowbase.cpp Examining data/pulseview-0.4.2/pv/subwindows/decoder_selector/subwindow.hpp Examining data/pulseview-0.4.2/pv/subwindows/decoder_selector/subwindow.cpp Examining data/pulseview-0.4.2/pv/subwindows/decoder_selector/model.cpp Examining data/pulseview-0.4.2/pv/subwindows/decoder_selector/item.cpp Examining data/pulseview-0.4.2/pv/subwindows/subwindowbase.hpp Examining data/pulseview-0.4.2/pv/popups/deviceoptions.cpp Examining data/pulseview-0.4.2/pv/popups/channels.hpp Examining data/pulseview-0.4.2/pv/popups/channels.cpp Examining data/pulseview-0.4.2/pv/popups/deviceoptions.hpp Examining data/pulseview-0.4.2/pv/util.hpp Examining data/pulseview-0.4.2/pv/logging.hpp Examining data/pulseview-0.4.2/pv/logging.cpp Examining data/pulseview-0.4.2/pv/devices/device.cpp Examining data/pulseview-0.4.2/pv/devices/inputfile.hpp Examining data/pulseview-0.4.2/pv/devices/file.hpp Examining data/pulseview-0.4.2/pv/devices/sessionfile.cpp Examining data/pulseview-0.4.2/pv/devices/hardwaredevice.hpp Examining data/pulseview-0.4.2/pv/devices/sessionfile.hpp Examining data/pulseview-0.4.2/pv/devices/device.hpp Examining data/pulseview-0.4.2/pv/devices/file.cpp Examining data/pulseview-0.4.2/pv/devices/inputfile.cpp Examining data/pulseview-0.4.2/pv/devices/hardwaredevice.cpp Examining data/pulseview-0.4.2/main.cpp Examining data/pulseview-0.4.2/extdef.h Examining data/pulseview-0.4.2/signalhandler.hpp Examining data/pulseview-0.4.2/android/loghandler.cpp Examining data/pulseview-0.4.2/android/loghandler.hpp Examining data/pulseview-0.4.2/android/assetreader.hpp Examining data/pulseview-0.4.2/android/assetreader.cpp Examining data/pulseview-0.4.2/signalhandler.cpp Examining data/pulseview-0.4.2/test/test.cpp Examining data/pulseview-0.4.2/test/test.hpp Examining data/pulseview-0.4.2/test/data/logicsegment.cpp Examining data/pulseview-0.4.2/test/data/decoderstack.cpp Examining data/pulseview-0.4.2/test/data/segment.cpp Examining data/pulseview-0.4.2/test/data/analogsegment.cpp Examining data/pulseview-0.4.2/test/util.cpp Examining data/pulseview-0.4.2/test/view/ruler.cpp FINAL RESULTS: data/pulseview-0.4.2/main.cpp:210:17: [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. const int c = getopt_long(argc, argv, data/pulseview-0.4.2/android/assetreader.cpp:35:26: [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). void AndroidAssetReader::open(struct sr_resource *res, string name) data/pulseview-0.4.2/android/assetreader.cpp:45:14: [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). if (!file->open(QIODevice::ReadOnly)) data/pulseview-0.4.2/android/assetreader.hpp:36:7: [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). void open(struct sr_resource *res, string name) override; data/pulseview-0.4.2/main.cpp:108:4: [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). f.open(QFile::ReadOnly | QFile::Text); data/pulseview-0.4.2/main.cpp:227:25: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). const int loglevel = atoi(optarg); data/pulseview-0.4.2/pv/data/analogsegment.cpp:146: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(s.samples, envelope_levels_[min_level].samples + start, data/pulseview-0.4.2/pv/data/decodesignal.cpp:574:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dest->data() + offset, chunk.data.data(), chunk.data.size()); data/pulseview-0.4.2/pv/data/decodesignal.cpp:617:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dest->data() + dest_offset, chunk.data.data(), chunk.data.size()); data/pulseview-0.4.2/pv/data/decodesignal.cpp:1484: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(chunk->data.data(), pdb->data, pdb->size); data/pulseview-0.4.2/pv/data/segment.cpp:125: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(resized_chunk, current_chunk_, used_samples_ * unit_size_); data/pulseview-0.4.2/pv/data/segment.cpp:142: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(current_chunk_ + (used_samples_ * unit_size_), data, unit_size_); data/pulseview-0.4.2/pv/data/segment.cpp:177: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((void*)dest, (void*)src, (copy_count * unit_size_)); data/pulseview-0.4.2/pv/data/segment.cpp:235: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(dest_ptr, chunk + chunk_offs, copy_size); data/pulseview-0.4.2/pv/devices/device.hpp:69:15: [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). virtual void open() = 0; data/pulseview-0.4.2/pv/devices/hardwaredevice.cpp:114:22: [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). void HardwareDevice::open() data/pulseview-0.4.2/pv/devices/hardwaredevice.cpp:120:12: [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). device_->open(); data/pulseview-0.4.2/pv/devices/hardwaredevice.hpp:58:7: [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). void open(); data/pulseview-0.4.2/pv/devices/inputfile.cpp:113:17: [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). void InputFile::open() data/pulseview-0.4.2/pv/devices/inputfile.hpp:61:7: [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). void open(); data/pulseview-0.4.2/pv/devices/sessionfile.cpp:39:19: [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). void SessionFile::open() data/pulseview-0.4.2/pv/devices/sessionfile.hpp:43:7: [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). void open(); data/pulseview-0.4.2/pv/dialogs/settings.cpp:798: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). if (file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) { data/pulseview-0.4.2/pv/globalsettings.cpp:206:8: [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). file.open(QFile::ReadOnly | QFile::Text); data/pulseview-0.4.2/pv/session.cpp:527:12: [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). device_->open(); data/pulseview-0.4.2/pv/storesession.cpp:179:19: [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). output_stream_.open(file_name_, ios_base::binary | data/pulseview-0.4.2/pv/views/decoder_binary/view.cpp:264: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). if (file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { data/pulseview-0.4.2/pv/views/decoder_binary/view.cpp:304: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). if (file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) { data/pulseview-0.4.2/pv/views/trace/decodetrace.cpp:1231: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). if (file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) { data/pulseview-0.4.2/android/assetreader.cpp:72:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). size_t AndroidAssetReader::read(const struct sr_resource *res, void *buf, size_t count) data/pulseview-0.4.2/android/assetreader.cpp:80:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const auto n_read = file->read(static_cast<char*>(buf), count); data/pulseview-0.4.2/android/assetreader.hpp:38:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). size_t read(const struct sr_resource *res, void *buf, size_t count) override; data/pulseview-0.4.2/pv/devices/inputfile.cpp:134:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). f->read(buffer.data(), BufferSize); data/pulseview-0.4.2/pv/devices/inputfile.cpp:176:6: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). f->read(buffer.data(), BufferSize); data/pulseview-0.4.2/pv/prop/enum.cpp:248:18: [1] (buffer) equal: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (v.first.equal(variant)) data/pulseview-0.4.2/signalhandler.cpp:69:6: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (read(sockets_[1], &sig_number, sizeof(int)) != sizeof(int)) { ANALYSIS SUMMARY: Hits = 36 Lines analyzed = 40513 in approximately 0.93 seconds (43702 lines/second) Physical Source Lines of Code (SLOC) = 25952 Hits@level = [0] 1 [1] 7 [2] 28 [3] 1 [4] 0 [5] 0 Hits@level+ = [0+] 37 [1+] 36 [2+] 29 [3+] 1 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 1.42571 [1+] 1.38718 [2+] 1.11745 [3+] 0.0385327 [4+] 0 [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.