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/wsclean-2.10.1/parsetreader.h Examining data/wsclean-2.10.1/nlplfitter.cpp Examining data/wsclean-2.10.1/imageweights.h Examining data/wsclean-2.10.1/distributed/slave.h Examining data/wsclean-2.10.1/distributed/taskmessage.h Examining data/wsclean-2.10.1/distributed/slave.cpp Examining data/wsclean-2.10.1/distributed/wsclean-mp.cpp Examining data/wsclean-2.10.1/areaset.h Examining data/wsclean-2.10.1/polynomialfitter.cpp Examining data/wsclean-2.10.1/dftpredictionalgorithm.h Examining data/wsclean-2.10.1/primarybeam/voltagepattern.cpp Examining data/wsclean-2.10.1/primarybeam/atcabeam.cpp Examining data/wsclean-2.10.1/primarybeam/atcabeam.h Examining data/wsclean-2.10.1/primarybeam/vlabeam.cpp Examining data/wsclean-2.10.1/primarybeam/vlabeam.h Examining data/wsclean-2.10.1/primarybeam/voltagepattern.h Examining data/wsclean-2.10.1/aterms/dishaterm.cpp Examining data/wsclean-2.10.1/aterms/atermresampler.cpp Examining data/wsclean-2.10.1/aterms/atermbase.cpp Examining data/wsclean-2.10.1/aterms/lofarbeamterm.h Examining data/wsclean-2.10.1/aterms/fitsaterm.cpp Examining data/wsclean-2.10.1/aterms/pafbeamterm.cpp Examining data/wsclean-2.10.1/aterms/dldmaterm.cpp Examining data/wsclean-2.10.1/aterms/dldmaterm.h Examining data/wsclean-2.10.1/aterms/fitsatermbase.h Examining data/wsclean-2.10.1/aterms/cache.cpp Examining data/wsclean-2.10.1/aterms/mwabeamterm.h Examining data/wsclean-2.10.1/aterms/pafbeamterm.h Examining data/wsclean-2.10.1/aterms/fitsatermbase.cpp Examining data/wsclean-2.10.1/aterms/atermconfig.h Examining data/wsclean-2.10.1/aterms/dishaterm.h Examining data/wsclean-2.10.1/aterms/atermbeam.h Examining data/wsclean-2.10.1/aterms/atermresampler.h Examining data/wsclean-2.10.1/aterms/fitsaterm.h Examining data/wsclean-2.10.1/aterms/cache.h Examining data/wsclean-2.10.1/aterms/lofarbeamterm.cpp Examining data/wsclean-2.10.1/aterms/atermstub.h Examining data/wsclean-2.10.1/aterms/mwabeamterm.cpp Examining data/wsclean-2.10.1/aterms/atermbase.h Examining data/wsclean-2.10.1/aterms/telescope.h Examining data/wsclean-2.10.1/model/modelparser.h Examining data/wsclean-2.10.1/model/tokenizer.h Examining data/wsclean-2.10.1/model/modelsource.h Examining data/wsclean-2.10.1/model/model.cpp Examining data/wsclean-2.10.1/model/modelcomponent.h Examining data/wsclean-2.10.1/model/powerlawsed.h Examining data/wsclean-2.10.1/model/spectralenergydistribution.h Examining data/wsclean-2.10.1/model/measuredsed.h Examining data/wsclean-2.10.1/model/measurement.h Examining data/wsclean-2.10.1/model/model.h Examining data/wsclean-2.10.1/model/bbsmodel.h Examining data/wsclean-2.10.1/mwa/tilebeambase.h Examining data/wsclean-2.10.1/mwa/beam2016implementation.h Examining data/wsclean-2.10.1/mwa/tilebeambase.cpp Examining data/wsclean-2.10.1/mwa/mwabeam.cpp Examining data/wsclean-2.10.1/mwa/recursive_lock.h Examining data/wsclean-2.10.1/mwa/tilebeam2016.cpp Examining data/wsclean-2.10.1/mwa/factorialtable.h Examining data/wsclean-2.10.1/mwa/tilebeam2016.h Examining data/wsclean-2.10.1/mwa/mwabeam.h Examining data/wsclean-2.10.1/mwa/beam2016implementation.cpp Examining data/wsclean-2.10.1/application.h Examining data/wsclean-2.10.1/msselection.cpp Examining data/wsclean-2.10.1/polynomialchannelfitter.h Examining data/wsclean-2.10.1/nlplfitter.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/polarization.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/imagecoordinates.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/uvector.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/lane.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/staticfor.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/uvector_11.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/cloned_ptr.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/barrier.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/matrix2x2.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/matrix4x4.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/threadpool.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/parallelfor.h Examining data/wsclean-2.10.1/aocommon/include/aocommon/banddata.h Examining data/wsclean-2.10.1/fftwmanager.h Examining data/wsclean-2.10.1/stopwatch.cpp Examining data/wsclean-2.10.1/system.cpp Examining data/wsclean-2.10.1/system.h Examining data/wsclean-2.10.1/image.h Examining data/wsclean-2.10.1/imageweights.cpp Examining data/wsclean-2.10.1/ndppp.h Examining data/wsclean-2.10.1/serialostream.h Examining data/wsclean-2.10.1/tests/testbaselinedependentaveraging.cpp Examining data/wsclean-2.10.1/tests/testclean.cpp Examining data/wsclean-2.10.1/tests/testhmatrix4x4.cpp Examining data/wsclean-2.10.1/tests/testradeccoord.cpp Examining data/wsclean-2.10.1/tests/testimage.cpp Examining data/wsclean-2.10.1/tests/testpolynomialfitter.cpp Examining data/wsclean-2.10.1/tests/testparsetreader.cpp Examining data/wsclean-2.10.1/tests/testgaussianfitter.cpp Examining data/wsclean-2.10.1/tests/testpolynomialchannelfitter.cpp Examining data/wsclean-2.10.1/tests/testcomponentlist.cpp Examining data/wsclean-2.10.1/tests/testfitsdateobstime.cpp Examining data/wsclean-2.10.1/tests/testfluxdensity.cpp Examining data/wsclean-2.10.1/tests/test.cpp Examining data/wsclean-2.10.1/tests/testimageset.cpp Examining data/wsclean-2.10.1/tests/testserialization.cpp Examining data/wsclean-2.10.1/polynomialchannelfitter.cpp Examining data/wsclean-2.10.1/wsclean/wscleansettings.cpp Examining data/wsclean-2.10.1/wsclean/imagefilename.h Examining data/wsclean-2.10.1/wsclean/commandline.h Examining data/wsclean-2.10.1/wsclean/wsmsgridder.h Examining data/wsclean-2.10.1/wsclean/imagingtable.cpp Examining data/wsclean-2.10.1/wsclean/measurementsetgridder.h Examining data/wsclean-2.10.1/wsclean/msgridderbase.h Examining data/wsclean-2.10.1/wsclean/gridmodeenum.h Examining data/wsclean-2.10.1/wsclean/griddingresult.h Examining data/wsclean-2.10.1/wsclean/wscleansettings.h Examining data/wsclean-2.10.1/wsclean/imagebufferallocator.h Examining data/wsclean-2.10.1/wsclean/logger.cpp Examining data/wsclean-2.10.1/wsclean/wscfitswriter.h Examining data/wsclean-2.10.1/wsclean/primarybeam.cpp Examining data/wsclean-2.10.1/wsclean/imageweightcache.h Examining data/wsclean-2.10.1/wsclean/smallinversionoptimization.h Examining data/wsclean-2.10.1/wsclean/wsclean.h Examining data/wsclean-2.10.1/wsclean/directmsgridder.h Examining data/wsclean-2.10.1/wsclean/logger.h Examining data/wsclean-2.10.1/wsclean/wsclean.cpp Examining data/wsclean-2.10.1/wsclean/cachedimageset.h Examining data/wsclean-2.10.1/wsclean/wstackinggridder.h Examining data/wsclean-2.10.1/wsclean/msgridderbase.cpp Examining data/wsclean-2.10.1/wsclean/observationinfo.h Examining data/wsclean-2.10.1/wsclean/imageoperations.h Examining data/wsclean-2.10.1/wsclean/unavailablegridder.h Examining data/wsclean-2.10.1/wsclean/directmsgridder.cpp Examining data/wsclean-2.10.1/wsclean/examples/wsuvbinning.cpp Examining data/wsclean-2.10.1/wsclean/examples/wspredictionexample.cpp Examining data/wsclean-2.10.1/wsclean/examples/wsuvbinningexample.cpp Examining data/wsclean-2.10.1/wsclean/binneduvoutput.h Examining data/wsclean-2.10.1/wsclean/wstackinggridder.cpp Examining data/wsclean-2.10.1/wsclean/commandline.cpp Examining data/wsclean-2.10.1/wsclean/outputchannelinfo.h Examining data/wsclean-2.10.1/wsclean/primarybeamimageset.h Examining data/wsclean-2.10.1/wsclean/primarybeam.h Examining data/wsclean-2.10.1/wsclean/wscfitswriter.cpp Examining data/wsclean-2.10.1/wsclean/observationinfo.cpp Examining data/wsclean-2.10.1/wsclean/wsmsgridder.cpp Examining data/wsclean-2.10.1/wsclean/imagingtable.h Examining data/wsclean-2.10.1/wsclean/imageoperations.cpp Examining data/wsclean-2.10.1/multiscale/mscaleexample.cpp Examining data/wsclean-2.10.1/multiscale/multiscalealgorithm.cpp Examining data/wsclean-2.10.1/multiscale/multiscaletransforms.cpp Examining data/wsclean-2.10.1/multiscale/multiscaletransforms.h Examining data/wsclean-2.10.1/multiscale/multiscalealgorithm.h Examining data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp Examining data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.h Examining data/wsclean-2.10.1/interface/wscleaninterface.cpp Examining data/wsclean-2.10.1/interface/wscleaninterface.h Examining data/wsclean-2.10.1/interface/_wsclean.c Examining data/wsclean-2.10.1/interface/imaginginterface.h Examining data/wsclean-2.10.1/msproviders/contiguousms.cpp Examining data/wsclean-2.10.1/msproviders/msprovider.cpp Examining data/wsclean-2.10.1/msproviders/synchronizedms.cpp Examining data/wsclean-2.10.1/msproviders/msdatadescription.h Examining data/wsclean-2.10.1/msproviders/partitionedms.cpp Examining data/wsclean-2.10.1/msproviders/noisemsrowprovider.h Examining data/wsclean-2.10.1/msproviders/contiguousms.h Examining data/wsclean-2.10.1/msproviders/directmsrowprovider.h Examining data/wsclean-2.10.1/msproviders/synchronizedms.h Examining data/wsclean-2.10.1/msproviders/msdatadescription.cpp Examining data/wsclean-2.10.1/msproviders/averagingmsrowprovider.h Examining data/wsclean-2.10.1/msproviders/msprovider.h Examining data/wsclean-2.10.1/msproviders/msrowprovider.h Examining data/wsclean-2.10.1/msproviders/partitionedms.h Examining data/wsclean-2.10.1/msproviders/timestepbuffer.h Examining data/wsclean-2.10.1/msproviders/directmsrowprovider.cpp Examining data/wsclean-2.10.1/msproviders/msrowprovider.cpp Examining data/wsclean-2.10.1/msproviders/averagingmsrowprovider.cpp Examining data/wsclean-2.10.1/rmsimage.cpp Examining data/wsclean-2.10.1/fftresampler.h Examining data/wsclean-2.10.1/parsetreader.cpp Examining data/wsclean-2.10.1/gaussianfitter.h Examining data/wsclean-2.10.1/fftconvolver.cpp Examining data/wsclean-2.10.1/wgridder/threading.h Examining data/wsclean-2.10.1/wgridder/bufferedmsgridder.cpp Examining data/wsclean-2.10.1/wgridder/bufferedmsgridder.h Examining data/wsclean-2.10.1/wgridder/wgriddinggridder_simple.h Examining data/wsclean-2.10.1/wgridder/gridder_cxx.h Examining data/wsclean-2.10.1/wgridder/wgriddinggridder_simple.cpp Examining data/wsclean-2.10.1/modelrenderer.h Examining data/wsclean-2.10.1/fftconvolver.h Examining data/wsclean-2.10.1/dftpredictionalgorithm.cpp Examining data/wsclean-2.10.1/casamaskreader.h Examining data/wsclean-2.10.1/fitsreader.cpp Examining data/wsclean-2.10.1/units/fluxdensity.h Examining data/wsclean-2.10.1/units/angle.h Examining data/wsclean-2.10.1/units/radeccoord.h Examining data/wsclean-2.10.1/deconvolution/paralleldeconvolution.h Examining data/wsclean-2.10.1/deconvolution/genericclean.cpp Examining data/wsclean-2.10.1/deconvolution/simpleclean.cpp Examining data/wsclean-2.10.1/deconvolution/deconvolutionalgorithm.h Examining data/wsclean-2.10.1/deconvolution/deconvolutionalgorithm.cpp Examining data/wsclean-2.10.1/deconvolution/subminorloop.h Examining data/wsclean-2.10.1/deconvolution/componentlist.cpp Examining data/wsclean-2.10.1/deconvolution/spectralfitter.h Examining data/wsclean-2.10.1/deconvolution/spectralfitter.cpp Examining data/wsclean-2.10.1/deconvolution/moresane.h Examining data/wsclean-2.10.1/deconvolution/spectralimagefitter.h Examining data/wsclean-2.10.1/deconvolution/lsdeconvolution.h Examining data/wsclean-2.10.1/deconvolution/lsdeconvolution.cpp Examining data/wsclean-2.10.1/deconvolution/paralleldeconvolution.cpp Examining data/wsclean-2.10.1/deconvolution/imageset.cpp Examining data/wsclean-2.10.1/deconvolution/imageset.h Examining data/wsclean-2.10.1/deconvolution/moresane.cpp Examining data/wsclean-2.10.1/deconvolution/deconvolution.cpp Examining data/wsclean-2.10.1/deconvolution/subdivision.h Examining data/wsclean-2.10.1/deconvolution/componentlist.h Examining data/wsclean-2.10.1/deconvolution/subminorloop.cpp Examining data/wsclean-2.10.1/deconvolution/iuwtdeconvolution.h Examining data/wsclean-2.10.1/deconvolution/simpleclean.h Examining data/wsclean-2.10.1/deconvolution/genericclean.h Examining data/wsclean-2.10.1/deconvolution/controllablelog.h Examining data/wsclean-2.10.1/deconvolution/deconvolution.h Examining data/wsclean-2.10.1/buffered_lane.h Examining data/wsclean-2.10.1/weightmode.h Examining data/wsclean-2.10.1/casamaskreader.cpp Examining data/wsclean-2.10.1/multibanddata.cpp Examining data/wsclean-2.10.1/image.cpp Examining data/wsclean-2.10.1/scheduling/griddingresult.h Examining data/wsclean-2.10.1/scheduling/griddingtaskmanager.h Examining data/wsclean-2.10.1/scheduling/threadedscheduler.h Examining data/wsclean-2.10.1/scheduling/griddingtaskmanager.cpp Examining data/wsclean-2.10.1/scheduling/mpischeduler.h Examining data/wsclean-2.10.1/scheduling/metadatacache.h Examining data/wsclean-2.10.1/scheduling/griddingtask.h Examining data/wsclean-2.10.1/scheduling/metadatacache.cpp Examining data/wsclean-2.10.1/scheduling/griddingresult.cpp Examining data/wsclean-2.10.1/scheduling/threadedscheduler.cpp Examining data/wsclean-2.10.1/scheduling/griddingtask.cpp Examining data/wsclean-2.10.1/scheduling/mpischeduler.cpp Examining data/wsclean-2.10.1/serialistream.h Examining data/wsclean-2.10.1/hmatrix4x4.h Examining data/wsclean-2.10.1/multibanddata.h Examining data/wsclean-2.10.1/fitsreader.h Examining data/wsclean-2.10.1/numberlist.h Examining data/wsclean-2.10.1/polynomialfitter.h Examining data/wsclean-2.10.1/fftresampler.cpp Examining data/wsclean-2.10.1/fitswriter.h Examining data/wsclean-2.10.1/progressbar.h Examining data/wsclean-2.10.1/lofar/lmspredicter.h Examining data/wsclean-2.10.1/lofar/lbeamevaluator.h Examining data/wsclean-2.10.1/lofar/lmspredicter.cpp Examining data/wsclean-2.10.1/lofar/lbeamimagemaker.h Examining data/wsclean-2.10.1/lofar/lbeamevaluator.cpp Examining data/wsclean-2.10.1/lofar/lbeamimagemaker.cpp Examining data/wsclean-2.10.1/lofar/lofarbeamkeywords.h Examining data/wsclean-2.10.1/fitsiochecker.h Examining data/wsclean-2.10.1/wscleanmain.cpp Examining data/wsclean-2.10.1/progressbar.cpp Examining data/wsclean-2.10.1/iuwt/iuwtdeconvolutionalgorithm.h Examining data/wsclean-2.10.1/iuwt/iuwtdecomposition.cpp Examining data/wsclean-2.10.1/iuwt/iuwtmask.h Examining data/wsclean-2.10.1/iuwt/iuwtdecomposition.h Examining data/wsclean-2.10.1/iuwt/imageanalysis.cpp Examining data/wsclean-2.10.1/iuwt/iuwtdeconvolutionalgorithm.cpp Examining data/wsclean-2.10.1/iuwt/iuwtmask.cpp Examining data/wsclean-2.10.1/iuwt/imageanalysis.h Examining data/wsclean-2.10.1/rmsimage.h Examining data/wsclean-2.10.1/fftwmanager.cpp Examining data/wsclean-2.10.1/threadpool.h Examining data/wsclean-2.10.1/msselection.h Examining data/wsclean-2.10.1/windowfunction.h Examining data/wsclean-2.10.1/fitsiochecker.cpp Examining data/wsclean-2.10.1/gaussianfitter.cpp Examining data/wsclean-2.10.1/idg/idgmsgridder.h Examining data/wsclean-2.10.1/idg/dummygridder.h Examining data/wsclean-2.10.1/idg/averagebeam.h Examining data/wsclean-2.10.1/idg/interface.h Examining data/wsclean-2.10.1/idg/idgmsgridder.cpp Examining data/wsclean-2.10.1/idg/averagebeam.cpp Examining data/wsclean-2.10.1/idg/idgconfiguration.h Examining data/wsclean-2.10.1/fitswriter.cpp Examining data/wsclean-2.10.1/stopwatch.h Examining data/wsclean-2.10.1/modelrenderer.cpp FINAL RESULTS: data/wsclean-2.10.1/application.h:21:5: [4] (shell) execl: 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. execl("/bin/sh", "sh", "-c", commandLine.c_str(), NULL); data/wsclean-2.10.1/deconvolution/moresane.cpp:61:4: [4] (shell) execl: 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. execl("/bin/sh", "sh", "-c", commandLine.str().c_str(), NULL); data/wsclean-2.10.1/idg/idgmsgridder.cpp:169:31: [4] (shell) system: 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. ATermBase::CoordinateSystem system; data/wsclean-2.10.1/idg/idgmsgridder.cpp:171:3: [4] (shell) system: 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. system.dl = -_bufferset->get_subgrid_pixelsize(); data/wsclean-2.10.1/idg/idgmsgridder.cpp:172:3: [4] (shell) system: 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. system.dm = -_bufferset->get_subgrid_pixelsize(); data/wsclean-2.10.1/idg/idgmsgridder.cpp:173:3: [4] (shell) system: 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. system.phaseCentreDL = PhaseCentreDL() - 0.5*system.dl; data/wsclean-2.10.1/idg/idgmsgridder.cpp:173:48: [4] (shell) system: 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. system.phaseCentreDL = PhaseCentreDL() - 0.5*system.dl; data/wsclean-2.10.1/idg/idgmsgridder.cpp:174:3: [4] (shell) system: 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. system.phaseCentreDM = PhaseCentreDM() + 0.5*system.dm; data/wsclean-2.10.1/idg/idgmsgridder.cpp:174:48: [4] (shell) system: 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. system.phaseCentreDM = PhaseCentreDM() + 0.5*system.dm; data/wsclean-2.10.1/idg/idgmsgridder.cpp:175:3: [4] (shell) system: 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. system.width = _bufferset->get_subgridsize(); data/wsclean-2.10.1/idg/idgmsgridder.cpp:176:3: [4] (shell) system: 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. system.height = system.width; data/wsclean-2.10.1/idg/idgmsgridder.cpp:176:19: [4] (shell) system: 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. system.height = system.width; data/wsclean-2.10.1/idg/idgmsgridder.cpp:177:3: [4] (shell) system: 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. system.maxSupport = _settings.atermKernelSize; data/wsclean-2.10.1/idg/idgmsgridder.cpp:178:3: [4] (shell) system: 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. system.ra = PhaseCentreRA(); data/wsclean-2.10.1/idg/idgmsgridder.cpp:179:3: [4] (shell) system: 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. system.dec = PhaseCentreDec(); data/wsclean-2.10.1/idg/idgmsgridder.cpp:182:69: [4] (shell) system: 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. std::unique_ptr<ATermConfig> config(new ATermConfig(nr_stations, system, _settings)); data/wsclean-2.10.1/idg/idgmsgridder.cpp:192:65: [4] (shell) system: 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. std::unique_ptr<LofarBeamTerm> beam(new LofarBeamTerm(*ms, system, _settings.dataColumnName)); data/wsclean-2.10.1/idg/idgmsgridder.cpp:199:61: [4] (shell) system: 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. std::unique_ptr<MWABeamTerm> beam(new MWABeamTerm(*ms, system)); data/wsclean-2.10.1/idg/idgmsgridder.cpp:206:57: [4] (shell) system: 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. std::unique_ptr<DishATerm> beam(new DishATerm(*ms, system)); data/wsclean-2.10.1/system.cpp:27:15: [4] (shell) system: 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. int status = system(command.c_str()); data/wsclean-2.10.1/application.h:16:13: [2] (race) vfork: On some old systems, vfork() permits race conditions, and it's very difficult to use correctly (CWE-362). Use fork() instead. int pid = vfork(); data/wsclean-2.10.1/deconvolution/deconvolutionalgorithm.cpp:67: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(destPtr, srcPtr, newWidth * sizeof(double)); data/wsclean-2.10.1/deconvolution/imageset.h:287: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(lhs, rhs, sizeof(double) * _width * _height); data/wsclean-2.10.1/deconvolution/imageset.h:292: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(lhs, rhs.data(), sizeof(double) * _width * _height); data/wsclean-2.10.1/deconvolution/moresane.cpp:56:12: [2] (race) vfork: On some old systems, vfork() permits race conditions, and it's very difficult to use correctly (CWE-362). Use fork() instead. int pid = vfork(); data/wsclean-2.10.1/deconvolution/spectralimagefitter.h:26: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(image, newImg, _width*_height*sizeof(double)); data/wsclean-2.10.1/distributed/wsclean-mp.cpp:31: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 hostname[256]; data/wsclean-2.10.1/fftconvolver.cpp:125: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(tempData, image, imgSize * sizeof(double)); data/wsclean-2.10.1/fftconvolver.cpp:128: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(tempData, kernel, imgSize * sizeof(double)); data/wsclean-2.10.1/fftconvolver.cpp:136: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(image, tempData, imgSize * sizeof(double)); data/wsclean-2.10.1/fitsiochecker.cpp:12: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 err_text[31]; data/wsclean-2.10.1/fitsiochecker.cpp:14: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 err_msg[81]; data/wsclean-2.10.1/fitsiochecker.cpp:28: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 err_text[31]; data/wsclean-2.10.1/fitsiochecker.cpp:30: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 err_msg[81]; data/wsclean-2.10.1/fitsreader.cpp:115: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 keyStr[256]; data/wsclean-2.10.1/fitsreader.cpp:128: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 keyStr[256]; data/wsclean-2.10.1/fitsreader.cpp:137: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 valueStr[256], commentStr[256]; data/wsclean-2.10.1/fitsreader.cpp:360: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 keyCard[256]; data/wsclean-2.10.1/fitswriter.cpp:140: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 data/wsclean-2.10.1/fitswriter.cpp:214: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 dateStr[40]; data/wsclean-2.10.1/fitswriter.cpp:215:8: [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. std::sprintf(dateStr, "%d-%02d-%02dT%02d:%02d:%02d.%01d", year, month, day, hour, min, sec, deciSec); data/wsclean-2.10.1/gaussianfitter.cpp:201: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(&smallImage[(y-startY)*boxWidth], &image[y*width + startX], sizeof(double)*boxWidth); data/wsclean-2.10.1/gaussianfitter.cpp:214: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(&smallImage[(y-startY)*boxWidth], &image[y*width + startX], sizeof(double)*boxWidth); data/wsclean-2.10.1/gaussianfitter.cpp:445: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(&smallImage[(y-yStart)*boxWidth], &image[y*width + xStart], sizeof(double)*boxWidth); data/wsclean-2.10.1/image.cpp:158: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(&output[(y-startY)*outWidth], &input[y*inWidth + startX], outWidth*sizeof(value_type)); data/wsclean-2.10.1/image.cpp:184: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(&output[y*outWidth + startX], &input[(y-startY)*inWidth], inWidth*sizeof(value_type)); data/wsclean-2.10.1/iuwt/iuwtdecomposition.cpp:36:4: [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(i0.data(), i1.data(), sizeof(double)*_width*_height); data/wsclean-2.10.1/iuwt/iuwtdecomposition.h:64:4: [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(input.data(), tmp.data(), sizeof(double)*_width*_height); data/wsclean-2.10.1/iuwt/iuwtdecomposition.h:104: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(i0.data(), i1.data(), sizeof(double)*_width*_height); data/wsclean-2.10.1/iuwt/iuwtdeconvolutionalgorithm.cpp:710:4: [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(scratch.data(), (*trimmedStructureModel)[i], (y2-y1)*(x2-x1)*sizeof(double)); data/wsclean-2.10.1/iuwt/iuwtdeconvolutionalgorithm.cpp:712:4: [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(structureModelFull[i], scratch.data(), width*height*sizeof(double)); data/wsclean-2.10.1/model/measurement.h:28:4: [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(_fluxDensities, source._fluxDensities, sizeof(long double)*4); data/wsclean-2.10.1/model/measurement.h:29:4: [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(_fluxDensityStddevs, source._fluxDensityStddevs, sizeof(long double)*4); data/wsclean-2.10.1/model/measurement.h:36:4: [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(_fluxDensities, source._fluxDensities, sizeof(long double)*4); data/wsclean-2.10.1/model/measurement.h:37:4: [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(_fluxDensityStddevs, source._fluxDensityStddevs, sizeof(long double)*4); data/wsclean-2.10.1/msproviders/averagingmsrowprovider.cpp:190: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(data.data(), _currentData.data(), bufferSize*sizeof(std::complex<float>)); data/wsclean-2.10.1/msproviders/averagingmsrowprovider.cpp:191: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(flags.data(), _currentFlags.data(), bufferSize*sizeof(bool)); data/wsclean-2.10.1/msproviders/averagingmsrowprovider.cpp:192: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(weights.data(), _currentWeights.data(), bufferSize*sizeof(float)); data/wsclean-2.10.1/msproviders/averagingmsrowprovider.cpp:206: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(model.data(), _currentModel.data(), bufferSize*sizeof(std::complex<float>)); data/wsclean-2.10.1/msproviders/contiguousms.cpp:17:2: [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). open(); data/wsclean-2.10.1/msproviders/contiguousms.cpp:20:20: [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 ContiguousMS::open() data/wsclean-2.10.1/msproviders/contiguousms.h:71: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/wsclean-2.10.1/msproviders/partitionedms.cpp:53: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). _dataFile.open(partPrefix+".tmp", std::ios::in); data/wsclean-2.10.1/msproviders/partitionedms.cpp:62:9: [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). _fd = open((partPrefix+"-m.tmp").c_str(), O_RDWR); data/wsclean-2.10.1/msproviders/partitionedms.cpp:79: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). _weightFile.open(partPrefix+"-w.tmp", std::ios::in); data/wsclean-2.10.1/msproviders/partitionedms.cpp:195: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(reinterpret_cast<char*>(buffer), _modelFileMap + rowLength*_currentRow, rowLength); data/wsclean-2.10.1/multiscale/multiscalealgorithm.cpp:179:4: [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(doubleConvolvedPSFs[i].data(), psf, _width*_height*sizeof(double)); data/wsclean-2.10.1/multiscale/multiscalealgorithm.cpp:184:4: [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(individualConvolvedImages[i], dirtySet[i], _width*_height*sizeof(double)); data/wsclean-2.10.1/multiscale/multiscalealgorithm.cpp:401: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(convolvedPSFs[scaleIndex].data(), psf, _width*_height*sizeof(double)); data/wsclean-2.10.1/multiscale/multiscalealgorithm.cpp:428: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(convolvedPSFs[scaleIndex].data(), psf, _width*_height*sizeof(double)); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:184: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(imageData[nextThread]->data(), image, dataSize*sizeof(double)); data/wsclean-2.10.1/mwa/beam2016implementation.cpp:674:26: [2] (integer) atol: 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). m_freq_list.push_back(atol(szFreq)); data/wsclean-2.10.1/mwa/mwabeam.cpp:86:4: [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(&beamImages[p][0], scratch.data(), sizeof(double)*_width*_height); data/wsclean-2.10.1/numberlist.h:21:14: [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). int num = atoi(idStr.c_str()); data/wsclean-2.10.1/numberlist.h:25:13: [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). int num = atoi(temp.c_str()); data/wsclean-2.10.1/system.h:47: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 buffer[1024]; data/wsclean-2.10.1/tests/testfitsdateobstime.cpp:30: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 dateStrA[40], dateStrB[40]; data/wsclean-2.10.1/tests/testfitsdateobstime.cpp:31:8: [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. std::sprintf(dateStrA, "%02d:%02d:%02d.%01d", hour, min, sec, dsec); data/wsclean-2.10.1/tests/testfitsdateobstime.cpp:36:8: [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. std::sprintf(dateStrB, "%02d:%02d:%02d.%01d", hour, min, sec, dsec); data/wsclean-2.10.1/wsclean/commandline.cpp:831:28: [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). settings.intervalsOut = atoi(argv[argi]); data/wsclean-2.10.1/aocommon/include/aocommon/lane.h:287:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool read(value_type &destination) { data/wsclean-2.10.1/aocommon/include/aocommon/lane.h:305:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). size_t read(value_type *destinations, size_t n) { data/wsclean-2.10.1/aocommon/include/aocommon/uvector.h:1123:15: [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. std::equal(lhs.begin(), lhs.end(), rhs.begin()); data/wsclean-2.10.1/aocommon/include/aocommon/uvector_11.h:1157:40: [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. return lhs.size()==rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin()); data/wsclean-2.10.1/aterms/lofarbeamterm.cpp:167:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(_lane->read(job_id)) data/wsclean-2.10.1/buffered_lane.h:99:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool read(Tp& element) data/wsclean-2.10.1/buffered_lane.h:103:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _buffer_fill_count = _lane->read(_buffer, _buffer_size); data/wsclean-2.10.1/fftresampler.cpp:39:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(_tasks.read(task)) data/wsclean-2.10.1/lofar/lmspredicter.cpp:158:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _availableBufferLane.read(rowData); data/wsclean-2.10.1/lofar/lmspredicter.cpp:205:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(_workLane.read(rowData)) data/wsclean-2.10.1/lofar/lmspredicter.h:63:30: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return _bufferedOutputLane.read(data); data/wsclean-2.10.1/model/model.cpp:15:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void Model::read(const char* filename) data/wsclean-2.10.1/model/model.h:21:42: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). explicit Model(const char *filename) { read(filename); } data/wsclean-2.10.1/model/model.h:22:49: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). explicit Model(const std::string& filename) { read(filename.c_str()); } data/wsclean-2.10.1/model/model.h:189:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void read(const char* filename); data/wsclean-2.10.1/msproviders/partitionedms.cpp:47:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _metaFile.read(reinterpret_cast<char*>(&_metaHeader), sizeof(MetaHeader)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:49:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _metaFile.read(msPath.data(), _metaHeader.filenameLength); data/wsclean-2.10.1/msproviders/partitionedms.cpp:56:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _dataFile.read(reinterpret_cast<char*>(&_partHeader), sizeof(PartHeader)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:142:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). record.read(_metaFile); data/wsclean-2.10.1/msproviders/partitionedms.cpp:156:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). record.read(_metaFile); data/wsclean-2.10.1/msproviders/partitionedms.cpp:184:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _dataFile.read(reinterpret_cast<char*>(buffer), _partHeader.channelCount * _polarizationCountInFile * sizeof(std::complex<float>)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:228:23: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _imagingWeightsFile->read(reinterpret_cast<char*>(_imagingWeightBuffer.data()), _partHeader.channelCount * _polarizationCountInFile * sizeof(float)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:243:14: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _weightFile.read(reinterpret_cast<char*>(displacedBuffer), _partHeader.channelCount * _polarizationCountInFile * sizeof(float)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:252:14: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _weightFile.read(reinterpret_cast<char*>(buffer), _partHeader.channelCount * _polarizationCountInFile * sizeof(float)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:569:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). metaFile.read(reinterpret_cast<char*>(&metaHeader), sizeof(MetaHeader)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:571:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). metaFile.read(msPath.data(), metaHeader.filenameLength); data/wsclean-2.10.1/msproviders/partitionedms.cpp:579:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). firstDataFile.read(reinterpret_cast<char*>(&firstPartHeader), sizeof(PartHeader)); data/wsclean-2.10.1/msproviders/partitionedms.cpp:657:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). modelFiles[fileIndex]->read(reinterpret_cast<char*>(modelDataBuffer.data()), (partEndCh - partStartCh) * polarizationsPerFile * sizeof(std::complex<float>)); data/wsclean-2.10.1/msproviders/partitionedms.h:174:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void read(std::istream& str) data/wsclean-2.10.1/msproviders/partitionedms.h:176:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&u), sizeof(double)); data/wsclean-2.10.1/msproviders/partitionedms.h:177:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&v), sizeof(double)); data/wsclean-2.10.1/msproviders/partitionedms.h:178:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&w), sizeof(double)); data/wsclean-2.10.1/msproviders/partitionedms.h:179:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&time), sizeof(double)); data/wsclean-2.10.1/msproviders/partitionedms.h:180:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&antenna1), sizeof(uint16_t)); data/wsclean-2.10.1/msproviders/partitionedms.h:181:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&antenna2), sizeof(uint16_t)); data/wsclean-2.10.1/msproviders/partitionedms.h:182:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&dataDescId), sizeof(uint16_t)); data/wsclean-2.10.1/msproviders/partitionedms.h:183:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). str.read(reinterpret_cast<char*>(&fieldId), sizeof(uint16_t)); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:62:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:92:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:102:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:139:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:149:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:204:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.cpp:220:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). _resultLanes[thr]->read(result); data/wsclean-2.10.1/multiscale/threadeddeconvolutiontools.h:105:19: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(taskLane->read(task)) data/wsclean-2.10.1/mwa/beam2016implementation.cpp:613:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). modes.read( data.data(), PredType::NATIVE_FLOAT, memspace, modes_dataspace ); data/wsclean-2.10.1/parsetreader.cpp:15:2: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read(stream); data/wsclean-2.10.1/parsetreader.cpp:20:2: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read(stream); data/wsclean-2.10.1/parsetreader.cpp:23:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void ParsetReader::read(std::istream& stream) data/wsclean-2.10.1/parsetreader.h:50:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void read(std::istream& stream); data/wsclean-2.10.1/scheduling/mpischeduler.cpp:95:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(_taskList.read(taskPair)) data/wsclean-2.10.1/scheduling/threadedscheduler.cpp:42:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(_taskList.read(taskPair)) data/wsclean-2.10.1/serialistream.h:42:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). value = (T) read<uint64_t>(); data/wsclean-2.10.1/serialistream.h:48:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<uint64_t>(); data/wsclean-2.10.1/serialistream.h:54:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). value = (T) read<uint32_t>(); data/wsclean-2.10.1/serialistream.h:60:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<uint32_t>(); data/wsclean-2.10.1/serialistream.h:66:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). value = (T) read<uint16_t>(); data/wsclean-2.10.1/serialistream.h:72:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<uint16_t>(); data/wsclean-2.10.1/serialistream.h:78:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). value = (T) read<uint8_t>(); data/wsclean-2.10.1/serialistream.h:84:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<uint8_t>(); data/wsclean-2.10.1/serialistream.h:100:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read(value); data/wsclean-2.10.1/serialistream.h:105:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<float>(); data/wsclean-2.10.1/serialistream.h:110:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read(value); data/wsclean-2.10.1/serialistream.h:115:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<double>(); data/wsclean-2.10.1/serialistream.h:120:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read(value); data/wsclean-2.10.1/serialistream.h:125:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<long double>(); data/wsclean-2.10.1/serialistream.h:130:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read(value); data/wsclean-2.10.1/serialistream.h:135:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<std::complex<float>>(); data/wsclean-2.10.1/serialistream.h:140:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read(value); data/wsclean-2.10.1/serialistream.h:145:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<std::complex<double>>(); data/wsclean-2.10.1/serialistream.h:150:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read(value); data/wsclean-2.10.1/serialistream.h:155:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return read<long double>(); data/wsclean-2.10.1/serialistream.h:232:17: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). SerialIStream& read(T& value) data/wsclean-2.10.1/serialistream.h:239:4: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). T read() data/wsclean-2.10.1/wsclean/directmsgridder.cpp:134:23: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(_inversionLane.read(sample)) data/wsclean-2.10.1/wsclean/wsmsgridder.cpp:215:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(buffer.read(sampleData)) data/wsclean-2.10.1/wsclean/wsmsgridder.cpp:295:19: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(inputLane->read(item)) data/wsclean-2.10.1/wsclean/wsmsgridder.cpp:307:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(buffer.read(workItem)) data/wsclean-2.10.1/wsclean/wsmsgridder.h:73:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while(workLane->read(workItem)) ANALYSIS SUMMARY: Hits = 159 Lines analyzed = 52019 in approximately 1.30 seconds (39896 lines/second) Physical Source Lines of Code (SLOC) = 41855 Hits@level = [0] 1 [1] 79 [2] 60 [3] 0 [4] 20 [5] 0 Hits@level+ = [0+] 160 [1+] 159 [2+] 80 [3+] 20 [4+] 20 [5+] 0 Hits/KSLOC@level+ = [0+] 3.82272 [1+] 3.79883 [2+] 1.91136 [3+] 0.47784 [4+] 0.47784 [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.