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/gqrx-sdr-2.14/src/applications/gqrx/file_resources.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/gqrx.h
Examining data/gqrx-sdr-2.14/src/applications/gqrx/main.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/mainwindow.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/mainwindow.h
Examining data/gqrx-sdr-2.14/src/applications/gqrx/receiver.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/receiver.h
Examining data/gqrx-sdr-2.14/src/applications/gqrx/recentconfig.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/recentconfig.h
Examining data/gqrx-sdr-2.14/src/applications/gqrx/remote_control.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/remote_control.h
Examining data/gqrx-sdr-2.14/src/applications/gqrx/remote_control_settings.cpp
Examining data/gqrx-sdr-2.14/src/applications/gqrx/remote_control_settings.h
Examining data/gqrx-sdr-2.14/src/dsp/afsk1200/cafsk12.cpp
Examining data/gqrx-sdr-2.14/src/dsp/afsk1200/cafsk12.h
Examining data/gqrx-sdr-2.14/src/dsp/afsk1200/costabf.c
Examining data/gqrx-sdr-2.14/src/dsp/afsk1200/filter.h
Examining data/gqrx-sdr-2.14/src/dsp/agc_impl.cpp
Examining data/gqrx-sdr-2.14/src/dsp/agc_impl.h
Examining data/gqrx-sdr-2.14/src/dsp/correct_iq_cc.cpp
Examining data/gqrx-sdr-2.14/src/dsp/correct_iq_cc.h
Examining data/gqrx-sdr-2.14/src/dsp/downconverter.cpp
Examining data/gqrx-sdr-2.14/src/dsp/downconverter.h
Examining data/gqrx-sdr-2.14/src/dsp/filter/fir_decim.cpp
Examining data/gqrx-sdr-2.14/src/dsp/filter/fir_decim.h
Examining data/gqrx-sdr-2.14/src/dsp/filter/fir_decim_coef.h
Examining data/gqrx-sdr-2.14/src/dsp/fm_deemph.cpp
Examining data/gqrx-sdr-2.14/src/dsp/fm_deemph.h
Examining data/gqrx-sdr-2.14/src/dsp/lpf.cpp
Examining data/gqrx-sdr-2.14/src/dsp/lpf.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/api.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/constants.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/decoder.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/decoder_impl.cc
Examining data/gqrx-sdr-2.14/src/dsp/rds/decoder_impl.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/parser.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/parser_impl.cc
Examining data/gqrx-sdr-2.14/src/dsp/rds/parser_impl.h
Examining data/gqrx-sdr-2.14/src/dsp/rds/tmc_events.h
Examining data/gqrx-sdr-2.14/src/dsp/resampler_xx.cpp
Examining data/gqrx-sdr-2.14/src/dsp/resampler_xx.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_agc_xx.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_agc_xx.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_demod_am.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_demod_am.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_demod_fm.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_demod_fm.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_fft.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_fft.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_filter.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_filter.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_meter.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_meter.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_noise_blanker_cc.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_noise_blanker_cc.h
Examining data/gqrx-sdr-2.14/src/dsp/rx_rds.cpp
Examining data/gqrx-sdr-2.14/src/dsp/rx_rds.h
Examining data/gqrx-sdr-2.14/src/dsp/sniffer_f.cpp
Examining data/gqrx-sdr-2.14/src/dsp/sniffer_f.h
Examining data/gqrx-sdr-2.14/src/dsp/stereo_demod.cpp
Examining data/gqrx-sdr-2.14/src/dsp/stereo_demod.h
Examining data/gqrx-sdr-2.14/src/interfaces/udp_sink_f.cpp
Examining data/gqrx-sdr-2.14/src/interfaces/udp_sink_f.h
Examining data/gqrx-sdr-2.14/src/osxaudio/device_list.cpp
Examining data/gqrx-sdr-2.14/src/osxaudio/device_list.h
Examining data/gqrx-sdr-2.14/src/portaudio/device_list.cpp
Examining data/gqrx-sdr-2.14/src/portaudio/device_list.h
Examining data/gqrx-sdr-2.14/src/portaudio/portaudio_sink.cpp
Examining data/gqrx-sdr-2.14/src/portaudio/portaudio_sink.h
Examining data/gqrx-sdr-2.14/src/pulseaudio/pa_device_list.cc
Examining data/gqrx-sdr-2.14/src/pulseaudio/pa_device_list.h
Examining data/gqrx-sdr-2.14/src/pulseaudio/pa_sink.cc
Examining data/gqrx-sdr-2.14/src/pulseaudio/pa_sink.h
Examining data/gqrx-sdr-2.14/src/pulseaudio/pa_source.cc
Examining data/gqrx-sdr-2.14/src/pulseaudio/pa_source.h
Examining data/gqrx-sdr-2.14/src/qtgui/afsk1200win.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/afsk1200win.h
Examining data/gqrx-sdr-2.14/src/qtgui/agc_options.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/agc_options.h
Examining data/gqrx-sdr-2.14/src/qtgui/audio_options.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/audio_options.h
Examining data/gqrx-sdr-2.14/src/qtgui/bandplan.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/bandplan.h
Examining data/gqrx-sdr-2.14/src/qtgui/bookmarks.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/bookmarks.h
Examining data/gqrx-sdr-2.14/src/qtgui/bookmarkstablemodel.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/bookmarkstablemodel.h
Examining data/gqrx-sdr-2.14/src/qtgui/bookmarkstaglist.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/bookmarkstaglist.h
Examining data/gqrx-sdr-2.14/src/qtgui/ctk/ctkPimpl.h
Examining data/gqrx-sdr-2.14/src/qtgui/ctk/ctkRangeSlider.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/ctk/ctkRangeSlider.h
Examining data/gqrx-sdr-2.14/src/qtgui/demod_options.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/demod_options.h
Examining data/gqrx-sdr-2.14/src/qtgui/dockaudio.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dockaudio.h
Examining data/gqrx-sdr-2.14/src/qtgui/dockbookmarks.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dockbookmarks.h
Examining data/gqrx-sdr-2.14/src/qtgui/dockfft.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dockfft.h
Examining data/gqrx-sdr-2.14/src/qtgui/dockinputctl.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dockinputctl.h
Examining data/gqrx-sdr-2.14/src/qtgui/dockrds.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dockrds.h
Examining data/gqrx-sdr-2.14/src/qtgui/dockrxopt.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dockrxopt.h
Examining data/gqrx-sdr-2.14/src/qtgui/dxc_options.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dxc_options.h
Examining data/gqrx-sdr-2.14/src/qtgui/dxc_spots.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/dxc_spots.h
Examining data/gqrx-sdr-2.14/src/qtgui/freqctrl.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/freqctrl.h
Examining data/gqrx-sdr-2.14/src/qtgui/ioconfig.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/ioconfig.h
Examining data/gqrx-sdr-2.14/src/qtgui/iq_tool.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/iq_tool.h
Examining data/gqrx-sdr-2.14/src/qtgui/meter.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/meter.h
Examining data/gqrx-sdr-2.14/src/qtgui/nb_options.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/nb_options.h
Examining data/gqrx-sdr-2.14/src/qtgui/plotter.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/plotter.h
Examining data/gqrx-sdr-2.14/src/qtgui/qtcolorpicker.cpp
Examining data/gqrx-sdr-2.14/src/qtgui/qtcolorpicker.h
Examining data/gqrx-sdr-2.14/src/receivers/nbrx.cpp
Examining data/gqrx-sdr-2.14/src/receivers/nbrx.h
Examining data/gqrx-sdr-2.14/src/receivers/receiver_base.cpp
Examining data/gqrx-sdr-2.14/src/receivers/receiver_base.h
Examining data/gqrx-sdr-2.14/src/receivers/wfmrx.cpp
Examining data/gqrx-sdr-2.14/src/receivers/wfmrx.h

FINAL RESULTS:

data/gqrx-sdr-2.14/src/dsp/afsk1200/cafsk12.cpp:205:9:  [4] (format) vfprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        vfprintf(stdout, fmt, args);
data/gqrx-sdr-2.14/src/pulseaudio/pa_sink.cc:73:9:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
data/gqrx-sdr-2.14/src/pulseaudio/pa_sink.cc:118:9:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
data/gqrx-sdr-2.14/src/pulseaudio/pa_sink.cc:162:9:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        fprintf(stderr, __FILE__": pa_simple_write() failed: %s\n", pa_strerror(error));
data/gqrx-sdr-2.14/src/pulseaudio/pa_source.cc:87:9:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
data/gqrx-sdr-2.14/src/pulseaudio/pa_source.cc:121:9:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
data/gqrx-sdr-2.14/src/pulseaudio/pa_source.cc:140:9:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
        fprintf(stderr, __FILE__": pa_simple_read() failed: %s\n", pa_strerror(error));
data/gqrx-sdr-2.14/src/applications/gqrx/file_resources.cpp:41:23:  [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).
            temp_file.open();
data/gqrx-sdr-2.14/src/applications/gqrx/mainwindow.cpp:2254: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).
    if (!news.open(QIODevice::ReadOnly | QIODevice::Text))
data/gqrx-sdr-2.14/src/applications/gqrx/recentconfig.cpp:92: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).
    if (!file.open(QFile::ReadOnly))
data/gqrx-sdr-2.14/src/applications/gqrx/recentconfig.cpp:127: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).
    if (!file.open(QFile::WriteOnly))
data/gqrx-sdr-2.14/src/applications/gqrx/remote_control.cpp:198:5:  [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] = {0};
data/gqrx-sdr-2.14/src/dsp/afsk1200/cafsk12.h:51: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.
            unsigned char rxbuf[512];
data/gqrx-sdr-2.14/src/dsp/afsk1200/cafsk12.h:66:26:  [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.
                unsigned char buffer[128];
data/gqrx-sdr-2.14/src/dsp/rds/decoder_impl.cc:86:11:  [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.
	unsigned char bytes[12];
data/gqrx-sdr-2.14/src/dsp/rds/decoder_impl.h:49:11:  [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.
	unsigned char  offset_chars[4];  // [ABCcDEx] (x=error)
data/gqrx-sdr-2.14/src/dsp/rds/parser_impl.cc:90: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 flagstring[8]     = "0000000";
data/gqrx-sdr-2.14/src/dsp/rds/parser_impl.cc:498: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 ps_on[8] = {' ',' ',' ',' ',' ',' ',' ',' '};
data/gqrx-sdr-2.14/src/dsp/rds/parser_impl.h:62: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           radiotext[65];
data/gqrx-sdr-2.14/src/dsp/rds/parser_impl.h:63: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           program_service_name[9];
data/gqrx-sdr-2.14/src/dsp/rx_fft.cpp:126: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(fftPoints, d_fft->get_outbuf(), sizeof(gr_complex)*d_fftsize);
data/gqrx-sdr-2.14/src/dsp/rx_fft.cpp:148:9:  [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(d_fft->get_inbuf(), d_cbuf.linearize(), sizeof(gr_complex)*size);
data/gqrx-sdr-2.14/src/dsp/rx_fft.cpp:324: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(fftPoints, d_fft->get_outbuf(), sizeof(gr_complex)*d_fftsize);
data/gqrx-sdr-2.14/src/dsp/sniffer_f.cpp:119: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(out, buff, sizeof(float)*num);
data/gqrx-sdr-2.14/src/qtgui/afsk1200win.cpp:122: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).
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
data/gqrx-sdr-2.14/src/qtgui/bandplan.cpp:67: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).
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return false;
data/gqrx-sdr-2.14/src/qtgui/bookmarks.cpp:77: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 | QIODevice::Text))
data/gqrx-sdr-2.14/src/qtgui/bookmarks.cpp:154:13:  [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(QFile::WriteOnly | QFile::Truncate | QIODevice::Text))
data/gqrx-sdr-2.14/src/qtgui/iq_tool.cpp:178:16:  [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/gqrx-sdr-2.14/src/qtgui/plotter.cpp:1758:10:  [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.
unsigned char turbo[256][3] = {
data/gqrx-sdr-2.14/src/qtgui/plotter.cpp:1814:10:  [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.
unsigned char plasma[256][3] = {
data/gqrx-sdr-2.14/src/qtgui/iq_tool.cpp:201:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        qint64 read = file->read(readbuf, chunk_size);
data/gqrx-sdr-2.14/src/qtgui/iq_tool.cpp:205:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        for (int j = 0; j < read/bytes_per_sample; j++)
data/gqrx-sdr-2.14/src/qtgui/iq_tool.cpp:212:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        avg /= read/bytes_per_sample;

ANALYSIS SUMMARY:

Hits = 34
Lines analyzed = 35833 in approximately 0.92 seconds (38804 lines/second)
Physical Source Lines of Code (SLOC) = 25215
Hits@level = [0]   8 [1]   3 [2]  24 [3]   0 [4]   7 [5]   0
Hits@level+ = [0+]  42 [1+]  34 [2+]  31 [3+]   7 [4+]   7 [5+]   0
Hits/KSLOC@level+ = [0+] 1.66568 [1+] 1.3484 [2+] 1.22943 [3+] 0.277613 [4+] 0.277613 [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.