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/relion-3.1.0/cmake/TestX86.c
Examining data/relion-3.1.0/relion.h
Examining data/relion-3.1.0/src/CPlot2D.cpp
Examining data/relion-3.1.0/src/CPlot2D.h
Examining data/relion-3.1.0/src/Healpix_2.15a/arr.h
Examining data/relion-3.1.0/src/Healpix_2.15a/cxxutils.cc
Examining data/relion-3.1.0/src/Healpix_2.15a/cxxutils.h
Examining data/relion-3.1.0/src/Healpix_2.15a/datatypes.h
Examining data/relion-3.1.0/src/Healpix_2.15a/geom_utils.h
Examining data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc
Examining data/relion-3.1.0/src/Healpix_2.15a/healpix_base.h
Examining data/relion-3.1.0/src/Healpix_2.15a/lsconstants.h
Examining data/relion-3.1.0/src/Healpix_2.15a/message_error.h
Examining data/relion-3.1.0/src/Healpix_2.15a/openmp_support.h
Examining data/relion-3.1.0/src/Healpix_2.15a/pointing.h
Examining data/relion-3.1.0/src/Healpix_2.15a/vec3.h
Examining data/relion-3.1.0/src/acc/acc_backprojector.h
Examining data/relion-3.1.0/src/acc/acc_backprojector_impl.h
Examining data/relion-3.1.0/src/acc/acc_helper_functions.h
Examining data/relion-3.1.0/src/acc/acc_helper_functions_impl.h
Examining data/relion-3.1.0/src/acc/acc_ml_optimiser.h
Examining data/relion-3.1.0/src/acc/acc_ml_optimiser_impl.h
Examining data/relion-3.1.0/src/acc/acc_projector.h
Examining data/relion-3.1.0/src/acc/acc_projector_impl.h
Examining data/relion-3.1.0/src/acc/acc_projector_plan.h
Examining data/relion-3.1.0/src/acc/acc_projector_plan_impl.h
Examining data/relion-3.1.0/src/acc/acc_projectorkernel_impl.h
Examining data/relion-3.1.0/src/acc/acc_ptr.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_backprojector.cpp
Examining data/relion-3.1.0/src/acc/cpu/cpu_benchmark_utils.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_helper_functions.cpp
Examining data/relion-3.1.0/src/acc/cpu/cpu_helper_functions.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_kernels/BP.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_kernels/cpu_utils.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_kernels/diff2.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_kernels/helper.cpp
Examining data/relion-3.1.0/src/acc/cpu/cpu_kernels/helper.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_kernels/wavg.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_ml_optimiser.cpp
Examining data/relion-3.1.0/src/acc/cpu/cpu_ml_optimiser.h
Examining data/relion-3.1.0/src/acc/cpu/cpu_projector.cpp
Examining data/relion-3.1.0/src/acc/cpu/cpu_projector_plan.cpp
Examining data/relion-3.1.0/src/acc/cpu/cpu_settings.h
Examining data/relion-3.1.0/src/acc/cpu/cuda_stubs.h
Examining data/relion-3.1.0/src/acc/cpu/mkl_fft.h
Examining data/relion-3.1.0/src/acc/cuda/cuda_autopicker.h
Examining data/relion-3.1.0/src/acc/cuda/cuda_benchmark_utils.h
Examining data/relion-3.1.0/src/acc/cuda/cuda_fft.h
Examining data/relion-3.1.0/src/acc/cuda/cuda_mem_utils.h
Examining data/relion-3.1.0/src/acc/cuda/cuda_ml_optimiser.h
Examining data/relion-3.1.0/src/acc/cuda/cuda_settings.h
Examining data/relion-3.1.0/src/acc/data_types.h
Examining data/relion-3.1.0/src/acc/settings.h
Examining data/relion-3.1.0/src/acc/utilities.h
Examining data/relion-3.1.0/src/acc/utilities_impl.h
Examining data/relion-3.1.0/src/apps/Zernike_test.cpp
Examining data/relion-3.1.0/src/apps/align_symmetry.cpp
Examining data/relion-3.1.0/src/apps/autopick.cpp
Examining data/relion-3.1.0/src/apps/autopick_mpi.cpp
Examining data/relion-3.1.0/src/apps/convert_star.cpp
Examining data/relion-3.1.0/src/apps/convert_to_tiff.cpp
Examining data/relion-3.1.0/src/apps/convert_to_tiff_mpi.cpp
Examining data/relion-3.1.0/src/apps/ctf_mask_test.cpp
Examining data/relion-3.1.0/src/apps/ctf_nyquist_test.cpp
Examining data/relion-3.1.0/src/apps/ctf_refine.cpp
Examining data/relion-3.1.0/src/apps/ctf_refine_mpi.cpp
Examining data/relion-3.1.0/src/apps/ctf_toolbox.cpp
Examining data/relion-3.1.0/src/apps/defocus_stats.cpp
Examining data/relion-3.1.0/src/apps/demodulate.cpp
Examining data/relion-3.1.0/src/apps/display.cpp
Examining data/relion-3.1.0/src/apps/double_bfac_fit.cpp
Examining data/relion-3.1.0/src/apps/double_reconstruct_openmp.cpp
Examining data/relion-3.1.0/src/apps/estimate_gain.cpp
Examining data/relion-3.1.0/src/apps/external_reconstruct.cpp
Examining data/relion-3.1.0/src/apps/find_tiltpairs.cpp
Examining data/relion-3.1.0/src/apps/flex_analyse.cpp
Examining data/relion-3.1.0/src/apps/flex_analyse_mpi.cpp
Examining data/relion-3.1.0/src/apps/helix_inimodel2d.cpp
Examining data/relion-3.1.0/src/apps/helix_toolbox.cpp
Examining data/relion-3.1.0/src/apps/image_handler.cpp
Examining data/relion-3.1.0/src/apps/import.cpp
Examining data/relion-3.1.0/src/apps/interpolation_test.cpp
Examining data/relion-3.1.0/src/apps/localsym.cpp
Examining data/relion-3.1.0/src/apps/localsym_mpi.cpp
Examining data/relion-3.1.0/src/apps/maingui.cpp
Examining data/relion-3.1.0/src/apps/manualpick.cpp
Examining data/relion-3.1.0/src/apps/mask_create.cpp
Examining data/relion-3.1.0/src/apps/merge_particles.cpp
Examining data/relion-3.1.0/src/apps/motion_refine.cpp
Examining data/relion-3.1.0/src/apps/motion_refine_mpi.cpp
Examining data/relion-3.1.0/src/apps/mrc2vtk.cpp
Examining data/relion-3.1.0/src/apps/paper_data_synth.cpp
Examining data/relion-3.1.0/src/apps/particle_FCC.cpp
Examining data/relion-3.1.0/src/apps/particle_reposition.cpp
Examining data/relion-3.1.0/src/apps/particle_select.cpp
Examining data/relion-3.1.0/src/apps/particle_subtract.cpp
Examining data/relion-3.1.0/src/apps/particle_subtract_mpi.cpp
Examining data/relion-3.1.0/src/apps/particle_symmetry_expand.cpp
Examining data/relion-3.1.0/src/apps/pipeliner.cpp
Examining data/relion-3.1.0/src/apps/plot_delocalisation.cpp
Examining data/relion-3.1.0/src/apps/postprocess.cpp
Examining data/relion-3.1.0/src/apps/postprocess_mpi.cpp
Examining data/relion-3.1.0/src/apps/prepare_subtomo.cpp
Examining data/relion-3.1.0/src/apps/preprocess.cpp
Examining data/relion-3.1.0/src/apps/preprocess_mpi.cpp
Examining data/relion-3.1.0/src/apps/project.cpp
Examining data/relion-3.1.0/src/apps/reconstruct.cpp
Examining data/relion-3.1.0/src/apps/reconstruct_mpi.cpp
Examining data/relion-3.1.0/src/apps/refine.cpp
Examining data/relion-3.1.0/src/apps/refine_mpi.cpp
Examining data/relion-3.1.0/src/apps/reposition.cpp
Examining data/relion-3.1.0/src/apps/run_ctffind.cpp
Examining data/relion-3.1.0/src/apps/run_ctffind_mpi.cpp
Examining data/relion-3.1.0/src/apps/run_motioncorr.cpp
Examining data/relion-3.1.0/src/apps/run_motioncorr_mpi.cpp
Examining data/relion-3.1.0/src/apps/scheduler.cpp
Examining data/relion-3.1.0/src/apps/split_stack.cpp
Examining data/relion-3.1.0/src/apps/stack_create.cpp
Examining data/relion-3.1.0/src/apps/star_handler.cpp
Examining data/relion-3.1.0/src/apps/tiltpair_plot.cpp
Examining data/relion-3.1.0/src/apps/tomo_test.cpp
Examining data/relion-3.1.0/src/apps/vis_Ewald_weight.cpp
Examining data/relion-3.1.0/src/apps/vis_delocalisation.cpp
Examining data/relion-3.1.0/src/args.cpp
Examining data/relion-3.1.0/src/args.h
Examining data/relion-3.1.0/src/assembly.cpp
Examining data/relion-3.1.0/src/assembly.h
Examining data/relion-3.1.0/src/autopicker.cpp
Examining data/relion-3.1.0/src/autopicker.h
Examining data/relion-3.1.0/src/autopicker_mpi.cpp
Examining data/relion-3.1.0/src/autopicker_mpi.h
Examining data/relion-3.1.0/src/backprojector.cpp
Examining data/relion-3.1.0/src/backprojector.h
Examining data/relion-3.1.0/src/complex.cpp
Examining data/relion-3.1.0/src/complex.h
Examining data/relion-3.1.0/src/ctf.cpp
Examining data/relion-3.1.0/src/ctf.h
Examining data/relion-3.1.0/src/ctffind_runner.cpp
Examining data/relion-3.1.0/src/ctffind_runner.h
Examining data/relion-3.1.0/src/ctffind_runner_mpi.cpp
Examining data/relion-3.1.0/src/ctffind_runner_mpi.h
Examining data/relion-3.1.0/src/displayer.cpp
Examining data/relion-3.1.0/src/displayer.h
Examining data/relion-3.1.0/src/error.cpp
Examining data/relion-3.1.0/src/error.h
Examining data/relion-3.1.0/src/euler.cpp
Examining data/relion-3.1.0/src/euler.h
Examining data/relion-3.1.0/src/exp_model.cpp
Examining data/relion-3.1.0/src/exp_model.h
Examining data/relion-3.1.0/src/fftw.cpp
Examining data/relion-3.1.0/src/fftw.h
Examining data/relion-3.1.0/src/filename.cpp
Examining data/relion-3.1.0/src/filename.h
Examining data/relion-3.1.0/src/flex_analyser.cpp
Examining data/relion-3.1.0/src/flex_analyser.h
Examining data/relion-3.1.0/src/funcs.cpp
Examining data/relion-3.1.0/src/funcs.h
Examining data/relion-3.1.0/src/gcc_version.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_autopicker.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_backprojector.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_benchmark_utils.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_fft.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_mem_utils.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_ml_optimiser.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_projector.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_projector_plan.h
Examining data/relion-3.1.0/src/gpu_utils/cuda_settings.h
Examining data/relion-3.1.0/src/gui_entries.cpp
Examining data/relion-3.1.0/src/gui_entries.h
Examining data/relion-3.1.0/src/gui_jobwindow.cpp
Examining data/relion-3.1.0/src/gui_jobwindow.h
Examining data/relion-3.1.0/src/gui_mainwindow.cpp
Examining data/relion-3.1.0/src/gui_mainwindow.h
Examining data/relion-3.1.0/src/healpix_sampling.cpp
Examining data/relion-3.1.0/src/healpix_sampling.h
Examining data/relion-3.1.0/src/helix.cpp
Examining data/relion-3.1.0/src/helix.h
Examining data/relion-3.1.0/src/helix_inimodel2d.cpp
Examining data/relion-3.1.0/src/helix_inimodel2d.h
Examining data/relion-3.1.0/src/image.cpp
Examining data/relion-3.1.0/src/image.h
Examining data/relion-3.1.0/src/jaz/Fourier_helper.cpp
Examining data/relion-3.1.0/src/jaz/Fourier_helper.h
Examining data/relion-3.1.0/src/jaz/Gaussian_pyramid.cpp
Examining data/relion-3.1.0/src/jaz/Gaussian_pyramid.h
Examining data/relion-3.1.0/src/jaz/aberration_fit.cpp
Examining data/relion-3.1.0/src/jaz/aberration_fit.h
Examining data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp
Examining data/relion-3.1.0/src/jaz/archive/apps/ref_aberration_plot.cpp
Examining data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp
Examining data/relion-3.1.0/src/jaz/archive/frame_merge.cpp
Examining data/relion-3.1.0/src/jaz/archive/frame_merge.h
Examining data/relion-3.1.0/src/jaz/archive/motion_em.cpp
Examining data/relion-3.1.0/src/jaz/archive/motion_em.h
Examining data/relion-3.1.0/src/jaz/archive/motion_refinement.cpp
Examining data/relion-3.1.0/src/jaz/archive/motion_refinement.h
Examining data/relion-3.1.0/src/jaz/archive/refinement_program.cpp
Examining data/relion-3.1.0/src/jaz/archive/refinement_program.h
Examining data/relion-3.1.0/src/jaz/complex_io.cpp
Examining data/relion-3.1.0/src/jaz/complex_io.h
Examining data/relion-3.1.0/src/jaz/config.h
Examining data/relion-3.1.0/src/jaz/convolution_helper.cpp
Examining data/relion-3.1.0/src/jaz/convolution_helper.h
Examining data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp
Examining data/relion-3.1.0/src/jaz/ctf/aberration_estimator.h
Examining data/relion-3.1.0/src/jaz/ctf/bfactor_refiner.cpp
Examining data/relion-3.1.0/src/jaz/ctf/bfactor_refiner.h
Examining data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp
Examining data/relion-3.1.0/src/jaz/ctf/ctf_refiner.h
Examining data/relion-3.1.0/src/jaz/ctf/ctf_refiner_mpi.cpp
Examining data/relion-3.1.0/src/jaz/ctf/ctf_refiner_mpi.h
Examining data/relion-3.1.0/src/jaz/ctf/defocus_estimator.cpp
Examining data/relion-3.1.0/src/jaz/ctf/defocus_estimator.h
Examining data/relion-3.1.0/src/jaz/ctf/defocus_helper.cpp
Examining data/relion-3.1.0/src/jaz/ctf/defocus_helper.h
Examining data/relion-3.1.0/src/jaz/ctf/delocalisation_helper.cpp
Examining data/relion-3.1.0/src/jaz/ctf/delocalisation_helper.h
Examining data/relion-3.1.0/src/jaz/ctf/equation2x2.cpp
Examining data/relion-3.1.0/src/jaz/ctf/equation2x2.h
Examining data/relion-3.1.0/src/jaz/ctf/magnification_estimator.cpp
Examining data/relion-3.1.0/src/jaz/ctf/magnification_estimator.h
Examining data/relion-3.1.0/src/jaz/ctf/magnification_helper.cpp
Examining data/relion-3.1.0/src/jaz/ctf/magnification_helper.h
Examining data/relion-3.1.0/src/jaz/ctf/modular_ctf_optimisation.cpp
Examining data/relion-3.1.0/src/jaz/ctf/modular_ctf_optimisation.h
Examining data/relion-3.1.0/src/jaz/ctf/tilt_estimator.cpp
Examining data/relion-3.1.0/src/jaz/ctf/tilt_estimator.h
Examining data/relion-3.1.0/src/jaz/ctf/tilt_helper.cpp
Examining data/relion-3.1.0/src/jaz/ctf/tilt_helper.h
Examining data/relion-3.1.0/src/jaz/ctf_helper.cpp
Examining data/relion-3.1.0/src/jaz/ctf_helper.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyev2.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyev2.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevc3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevc3.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevd3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevd3.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevh3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevh3.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevj3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevj3.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevq3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevq3.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevv3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsyevv3.h
Examining data/relion-3.1.0/src/jaz/d3x3/dsytrd3.c
Examining data/relion-3.1.0/src/jaz/d3x3/dsytrd3.h
Examining data/relion-3.1.0/src/jaz/d3x3/slvsec3.c
Examining data/relion-3.1.0/src/jaz/d3x3/slvsec3.h
Examining data/relion-3.1.0/src/jaz/damage_helper.cpp
Examining data/relion-3.1.0/src/jaz/damage_helper.h
Examining data/relion-3.1.0/src/jaz/distribution_helper.cpp
Examining data/relion-3.1.0/src/jaz/distribution_helper.h
Examining data/relion-3.1.0/src/jaz/fftw_helper.cpp
Examining data/relion-3.1.0/src/jaz/fftw_helper.h
Examining data/relion-3.1.0/src/jaz/fsc_helper.cpp
Examining data/relion-3.1.0/src/jaz/fsc_helper.h
Examining data/relion-3.1.0/src/jaz/gravis/Exception.h
Examining data/relion-3.1.0/src/jaz/gravis/Mesh.h
Examining data/relion-3.1.0/src/jaz/gravis/NMesh.h
Examining data/relion-3.1.0/src/jaz/gravis/NTuple.h
Examining data/relion-3.1.0/src/jaz/gravis/OBJReader.h
Examining data/relion-3.1.0/src/jaz/gravis/OBJWriter.h
Examining data/relion-3.1.0/src/jaz/gravis/PushPull.h
Examining data/relion-3.1.0/src/jaz/gravis/StringFormat.h
Examining data/relion-3.1.0/src/jaz/gravis/Timer.hpp
Examining data/relion-3.1.0/src/jaz/gravis/Tuple.h
Examining data/relion-3.1.0/src/jaz/gravis/colour/rgb_hsv.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array/ArrayStreamIO.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array/a.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array/le.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array/networkByteOrder.h
Examining data/relion-3.1.0/src/jaz/gravis/io/array/raw.h
Examining data/relion-3.1.0/src/jaz/gravis/io/image/f.h
Examining data/relion-3.1.0/src/jaz/gravis/io/mesh.h
Examining data/relion-3.1.0/src/jaz/gravis/io/mesh/OBJReader.h
Examining data/relion-3.1.0/src/jaz/gravis/io/mesh/OBJWriter.h
Examining data/relion-3.1.0/src/jaz/gravis/io/mesh/absolute_paths.h
Examining data/relion-3.1.0/src/jaz/gravis/io/mesh/msh.h
Examining data/relion-3.1.0/src/jaz/gravis/io/mesh/obj.h
Examining data/relion-3.1.0/src/jaz/gravis/lapack.h
Examining data/relion-3.1.0/src/jaz/gravis/matrix_blas_reference.h
Examining data/relion-3.1.0/src/jaz/gravis/private/tDeterminants.h
Examining data/relion-3.1.0/src/jaz/gravis/private/tRefCPtr.h
Examining data/relion-3.1.0/src/jaz/gravis/program_options.h
Examining data/relion-3.1.0/src/jaz/gravis/t2Matrix.h
Examining data/relion-3.1.0/src/jaz/gravis/t2Vector.h
Examining data/relion-3.1.0/src/jaz/gravis/t3Matrix.h
Examining data/relion-3.1.0/src/jaz/gravis/t3Vector.h
Examining data/relion-3.1.0/src/jaz/gravis/t4Matrix.h
Examining data/relion-3.1.0/src/jaz/gravis/t4Vector.h
Examining data/relion-3.1.0/src/jaz/gravis/tArray.h
Examining data/relion-3.1.0/src/jaz/gravis/tBGR.h
Examining data/relion-3.1.0/src/jaz/gravis/tDefaultVector.h
Examining data/relion-3.1.0/src/jaz/gravis/tGray_A.h
Examining data/relion-3.1.0/src/jaz/gravis/tImage.h
Examining data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h
Examining data/relion-3.1.0/src/jaz/gravis/tImage/draw.h
Examining data/relion-3.1.0/src/jaz/gravis/tImage/normalization.h
Examining data/relion-3.1.0/src/jaz/gravis/tImage/operators.h
Examining data/relion-3.1.0/src/jaz/gravis/tImage/traits.h
Examining data/relion-3.1.0/src/jaz/gravis/tImageAlgorithm.h
Examining data/relion-3.1.0/src/jaz/gravis/tLab.h
Examining data/relion-3.1.0/src/jaz/gravis/tMM.h
Examining data/relion-3.1.0/src/jaz/gravis/tMatrix.h
Examining data/relion-3.1.0/src/jaz/gravis/tMesh.h
Examining data/relion-3.1.0/src/jaz/gravis/tQuaternion.h
Examining data/relion-3.1.0/src/jaz/gravis/tRGB.h
Examining data/relion-3.1.0/src/jaz/gravis/tRGBA.h
Examining data/relion-3.1.0/src/jaz/gravis/tRGB_A.h
Examining data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h
Examining data/relion-3.1.0/src/jaz/gravis/tVarMatrix_blas.h
Examining data/relion-3.1.0/src/jaz/gravis/tYCbCr.h
Examining data/relion-3.1.0/src/jaz/image_log.cpp
Examining data/relion-3.1.0/src/jaz/image_log.h
Examining data/relion-3.1.0/src/jaz/img_proc/color_helper.cpp
Examining data/relion-3.1.0/src/jaz/img_proc/color_helper.h
Examining data/relion-3.1.0/src/jaz/img_proc/filter_helper.cpp
Examining data/relion-3.1.0/src/jaz/img_proc/filter_helper.h
Examining data/relion-3.1.0/src/jaz/img_proc/image_op.cpp
Examining data/relion-3.1.0/src/jaz/img_proc/image_op.h
Examining data/relion-3.1.0/src/jaz/img_proc/radial_avg.h
Examining data/relion-3.1.0/src/jaz/index_sort.h
Examining data/relion-3.1.0/src/jaz/interpolation.cpp
Examining data/relion-3.1.0/src/jaz/interpolation.h
Examining data/relion-3.1.0/src/jaz/io/star_converter.cpp
Examining data/relion-3.1.0/src/jaz/io/star_converter.h
Examining data/relion-3.1.0/src/jaz/jaz_config.cpp
Examining data/relion-3.1.0/src/jaz/jaz_config.h
Examining data/relion-3.1.0/src/jaz/lbfgs/arithmetic_ansi.h
Examining data/relion-3.1.0/src/jaz/lbfgs/arithmetic_sse_double.h
Examining data/relion-3.1.0/src/jaz/lbfgs/arithmetic_sse_float.h
Examining data/relion-3.1.0/src/jaz/lbfgs/lbfgs.c
Examining data/relion-3.1.0/src/jaz/lbfgs/lbfgs.h
Examining data/relion-3.1.0/src/jaz/legacy_obs_model.cpp
Examining data/relion-3.1.0/src/jaz/legacy_obs_model.h
Examining data/relion-3.1.0/src/jaz/local_motion_fit.cpp
Examining data/relion-3.1.0/src/jaz/local_motion_fit.h
Examining data/relion-3.1.0/src/jaz/math/Zernike.cpp
Examining data/relion-3.1.0/src/jaz/math/Zernike.h
Examining data/relion-3.1.0/src/jaz/micrograph_handler.cpp
Examining data/relion-3.1.0/src/jaz/micrograph_handler.h
Examining data/relion-3.1.0/src/jaz/motion/alignment_set.cpp
Examining data/relion-3.1.0/src/jaz/motion/alignment_set.h
Examining data/relion-3.1.0/src/jaz/motion/frame_recombiner.cpp
Examining data/relion-3.1.0/src/jaz/motion/frame_recombiner.h
Examining data/relion-3.1.0/src/jaz/motion/gp_motion_fit.cpp
Examining data/relion-3.1.0/src/jaz/motion/gp_motion_fit.h
Examining data/relion-3.1.0/src/jaz/motion/motion_estimator.cpp
Examining data/relion-3.1.0/src/jaz/motion/motion_estimator.h
Examining data/relion-3.1.0/src/jaz/motion/motion_helper.cpp
Examining data/relion-3.1.0/src/jaz/motion/motion_helper.h
Examining data/relion-3.1.0/src/jaz/motion/motion_param_estimator.cpp
Examining data/relion-3.1.0/src/jaz/motion/motion_param_estimator.h
Examining data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp
Examining data/relion-3.1.0/src/jaz/motion/motion_refiner.h
Examining data/relion-3.1.0/src/jaz/motion/motion_refiner_mpi.cpp
Examining data/relion-3.1.0/src/jaz/motion/motion_refiner_mpi.h
Examining data/relion-3.1.0/src/jaz/motion/three_hyperparameter_fit.cpp
Examining data/relion-3.1.0/src/jaz/motion/three_hyperparameter_fit.h
Examining data/relion-3.1.0/src/jaz/motion/two_hyperparameter_fit.cpp
Examining data/relion-3.1.0/src/jaz/motion/two_hyperparameter_fit.h
Examining data/relion-3.1.0/src/jaz/new_ft.cpp
Examining data/relion-3.1.0/src/jaz/new_ft.h
Examining data/relion-3.1.0/src/jaz/noise_helper.cpp
Examining data/relion-3.1.0/src/jaz/noise_helper.h
Examining data/relion-3.1.0/src/jaz/obs_model.cpp
Examining data/relion-3.1.0/src/jaz/obs_model.h
Examining data/relion-3.1.0/src/jaz/optimization/gradient_descent.cpp
Examining data/relion-3.1.0/src/jaz/optimization/gradient_descent.h
Examining data/relion-3.1.0/src/jaz/optimization/lbfgs.cpp
Examining data/relion-3.1.0/src/jaz/optimization/lbfgs.h
Examining data/relion-3.1.0/src/jaz/optimization/nelder_mead.cpp
Examining data/relion-3.1.0/src/jaz/optimization/nelder_mead.h
Examining data/relion-3.1.0/src/jaz/optimization/optimization.cpp
Examining data/relion-3.1.0/src/jaz/optimization/optimization.h
Examining data/relion-3.1.0/src/jaz/parallel_ft.cpp
Examining data/relion-3.1.0/src/jaz/parallel_ft.h
Examining data/relion-3.1.0/src/jaz/reference_map.cpp
Examining data/relion-3.1.0/src/jaz/reference_map.h
Examining data/relion-3.1.0/src/jaz/refinement_helper.cpp
Examining data/relion-3.1.0/src/jaz/refinement_helper.h
Examining data/relion-3.1.0/src/jaz/resampling_helper.cpp
Examining data/relion-3.1.0/src/jaz/resampling_helper.h
Examining data/relion-3.1.0/src/jaz/slice_helper.cpp
Examining data/relion-3.1.0/src/jaz/slice_helper.h
Examining data/relion-3.1.0/src/jaz/spectral_helper.cpp
Examining data/relion-3.1.0/src/jaz/spectral_helper.h
Examining data/relion-3.1.0/src/jaz/stack_helper.cpp
Examining data/relion-3.1.0/src/jaz/stack_helper.h
Examining data/relion-3.1.0/src/jaz/structure_tensor.cpp
Examining data/relion-3.1.0/src/jaz/structure_tensor.h
Examining data/relion-3.1.0/src/jaz/svd_helper.cpp
Examining data/relion-3.1.0/src/jaz/svd_helper.h
Examining data/relion-3.1.0/src/jaz/t_complex.cpp
Examining data/relion-3.1.0/src/jaz/t_complex.h
Examining data/relion-3.1.0/src/jaz/tensor2x2.h
Examining data/relion-3.1.0/src/jaz/tensor3x3.h
Examining data/relion-3.1.0/src/jaz/tomo/backprojection_helper.cpp
Examining data/relion-3.1.0/src/jaz/tomo/backprojection_helper.h
Examining data/relion-3.1.0/src/jaz/tomo/imod_helper.cpp
Examining data/relion-3.1.0/src/jaz/tomo/imod_helper.h
Examining data/relion-3.1.0/src/jaz/tomo/projection_helper.cpp
Examining data/relion-3.1.0/src/jaz/tomo/projection_helper.h
Examining data/relion-3.1.0/src/jaz/tomo/tomo_stack.cpp
Examining data/relion-3.1.0/src/jaz/tomo/tomo_stack.h
Examining data/relion-3.1.0/src/jaz/volume.h
Examining data/relion-3.1.0/src/jaz/volume_converter.cpp
Examining data/relion-3.1.0/src/jaz/volume_converter.h
Examining data/relion-3.1.0/src/jaz/volume_integration.cpp
Examining data/relion-3.1.0/src/jaz/volume_integration.h
Examining data/relion-3.1.0/src/jaz/vtk_helper.cpp
Examining data/relion-3.1.0/src/jaz/vtk_helper.h
Examining data/relion-3.1.0/src/local_symmetry.cpp
Examining data/relion-3.1.0/src/local_symmetry.h
Examining data/relion-3.1.0/src/local_symmetry_mpi.cpp
Examining data/relion-3.1.0/src/local_symmetry_mpi.h
Examining data/relion-3.1.0/src/macros.h
Examining data/relion-3.1.0/src/manualpicker.cpp
Examining data/relion-3.1.0/src/manualpicker.h
Examining data/relion-3.1.0/src/mask.cpp
Examining data/relion-3.1.0/src/mask.h
Examining data/relion-3.1.0/src/matrix1d.cpp
Examining data/relion-3.1.0/src/matrix1d.h
Examining data/relion-3.1.0/src/matrix2d.cpp
Examining data/relion-3.1.0/src/matrix2d.h
Examining data/relion-3.1.0/src/memory.cpp
Examining data/relion-3.1.0/src/memory.h
Examining data/relion-3.1.0/src/metadata_container.cpp
Examining data/relion-3.1.0/src/metadata_container.h
Examining data/relion-3.1.0/src/metadata_label.cpp
Examining data/relion-3.1.0/src/metadata_label.h
Examining data/relion-3.1.0/src/metadata_table.cpp
Examining data/relion-3.1.0/src/metadata_table.h
Examining data/relion-3.1.0/src/micrograph_model.cpp
Examining data/relion-3.1.0/src/micrograph_model.h
Examining data/relion-3.1.0/src/ml_model.cpp
Examining data/relion-3.1.0/src/ml_model.h
Examining data/relion-3.1.0/src/ml_optimiser.cpp
Examining data/relion-3.1.0/src/ml_optimiser.h
Examining data/relion-3.1.0/src/ml_optimiser_mpi.cpp
Examining data/relion-3.1.0/src/ml_optimiser_mpi.h
Examining data/relion-3.1.0/src/motioncorr_runner.cpp
Examining data/relion-3.1.0/src/motioncorr_runner.h
Examining data/relion-3.1.0/src/motioncorr_runner_mpi.cpp
Examining data/relion-3.1.0/src/motioncorr_runner_mpi.h
Examining data/relion-3.1.0/src/mpi.cpp
Examining data/relion-3.1.0/src/mpi.h
Examining data/relion-3.1.0/src/multidim_array.cpp
Examining data/relion-3.1.0/src/multidim_array.h
Examining data/relion-3.1.0/src/numerical_recipes.cpp
Examining data/relion-3.1.0/src/numerical_recipes.h
Examining data/relion-3.1.0/src/parallel.cpp
Examining data/relion-3.1.0/src/parallel.h
Examining data/relion-3.1.0/src/particle_subtractor.cpp
Examining data/relion-3.1.0/src/particle_subtractor.h
Examining data/relion-3.1.0/src/pipeline_control.cpp
Examining data/relion-3.1.0/src/pipeline_control.h
Examining data/relion-3.1.0/src/pipeline_jobs.cpp
Examining data/relion-3.1.0/src/pipeline_jobs.h
Examining data/relion-3.1.0/src/pipeliner.cpp
Examining data/relion-3.1.0/src/pipeliner.h
Examining data/relion-3.1.0/src/postprocessing.cpp
Examining data/relion-3.1.0/src/postprocessing.h
Examining data/relion-3.1.0/src/preprocessing.cpp
Examining data/relion-3.1.0/src/preprocessing.h
Examining data/relion-3.1.0/src/preprocessing_mpi.cpp
Examining data/relion-3.1.0/src/preprocessing_mpi.h
Examining data/relion-3.1.0/src/projector.cpp
Examining data/relion-3.1.0/src/projector.h
Examining data/relion-3.1.0/src/reconstructor.cpp
Examining data/relion-3.1.0/src/reconstructor.h
Examining data/relion-3.1.0/src/reconstructor_mpi.cpp
Examining data/relion-3.1.0/src/reconstructor_mpi.h
Examining data/relion-3.1.0/src/rwIMAGIC.h
Examining data/relion-3.1.0/src/rwMRC.h
Examining data/relion-3.1.0/src/rwSPIDER.h
Examining data/relion-3.1.0/src/rwTIFF.h
Examining data/relion-3.1.0/src/scheduler.cpp
Examining data/relion-3.1.0/src/scheduler.h
Examining data/relion-3.1.0/src/strings.cpp
Examining data/relion-3.1.0/src/strings.h
Examining data/relion-3.1.0/src/symmetries.cpp
Examining data/relion-3.1.0/src/symmetries.h
Examining data/relion-3.1.0/src/tabfuncs.cpp
Examining data/relion-3.1.0/src/tabfuncs.h
Examining data/relion-3.1.0/src/tiff_converter.cpp
Examining data/relion-3.1.0/src/tiff_converter.h
Examining data/relion-3.1.0/src/time.cpp
Examining data/relion-3.1.0/src/time.h
Examining data/relion-3.1.0/src/transformations.cpp
Examining data/relion-3.1.0/src/transformations.h

FINAL RESULTS:

data/relion-3.1.0/src/filename.cpp:597:18:  [5] (race) readlink:
  This accepts filename arguments; if an attacker can move those files or
  change the link content, a race condition results. Also, it does not
  terminate with ASCII NUL. (CWE-362, CWE-20). Reconsider approach.
	ssize_t len = ::readlink(second_dir.c_str(), linkname, len_max);
data/relion-3.1.0/src/pipeline_jobs.cpp:2865:113:  [5] (buffer) gets:
  Does not check for buffer overflows (CWE-120, CWE-20). Use fgets() instead.
This will affect the time it takes between the progress-bar in the expectation step reaching its end (the mouse gets to the cheese) and the start of the ensuing maximisation step. It will depend on your system setup which is most efficient.");
data/relion-3.1.0/src/CPlot2D.cpp:58:7:  [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.
		if (system(command.c_str()))
data/relion-3.1.0/src/CPlot2D.cpp:737:13:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
            sprintf(temp,m_cXAxisLabelFormat,x);
data/relion-3.1.0/src/CPlot2D.cpp:747:13:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
            sprintf(temp,m_cYAxisLabelFormat,x);
data/relion-3.1.0/src/apps/ctf_nyquist_test.cpp:125:13:  [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 ret = system(command.c_str());
data/relion-3.1.0/src/apps/demodulate.cpp:43:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/apps/demodulate.cpp:86:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/apps/import.cpp:213:9:  [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.
				if (system(command.c_str())) REPORT_ERROR("ERROR: there was an error executing: " + command);
data/relion-3.1.0/src/apps/import.cpp:218:10:  [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.
					if (system(command.c_str())) REPORT_ERROR("ERROR: there was an error executing: " + command);
data/relion-3.1.0/src/apps/import.cpp:227:10:  [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.
					if (system(command.c_str())) REPORT_ERROR("ERROR: there was an error executing: " + command);
data/relion-3.1.0/src/apps/import.cpp:275:8:  [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.
			if (system(command.c_str())) REPORT_ERROR("ERROR: there was an error executing: " + command);
data/relion-3.1.0/src/apps/import.cpp:298:9:  [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.
				if (system(command.c_str())) REPORT_ERROR("ERROR: there was an error executing: " + command);
data/relion-3.1.0/src/apps/maingui.cpp:63:2:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
	strcat(titletext,PACKAGE_VERSION);
data/relion-3.1.0/src/apps/maingui.cpp:67:2:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
	strcat (titletext, short_dir);
data/relion-3.1.0/src/apps/particle_reposition.cpp:126:16:  [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 res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:500:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:513:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:583:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:592:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:601:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:682:13:  [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.
						res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:699:13:  [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.
						res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:717:13:  [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.
						res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:776:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:1072:9:  [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.
		res = system(command.c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:1081:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/apps/reposition.cpp:145:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/apps/scheduler.cpp:150:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/apps/stack_create.cpp:169: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 res = system(command.c_str());
data/relion-3.1.0/src/assembly.cpp:431:5:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
				strcpy(atomname, molecules[imol].residues[ires].atoms[iatom].name.c_str());
data/relion-3.1.0/src/autopicker.cpp:922:14:  [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 res = system(("mkdir -p " + fn_dir).c_str());
data/relion-3.1.0/src/autopicker_mpi.cpp:108:14:  [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 res = system(("mkdir -p " + fn_dir).c_str());
data/relion-3.1.0/src/backprojector.cpp:1282:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/ctffind_runner.cpp:316:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/ctffind_runner.cpp:598:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/ctffind_runner.cpp:675:6:  [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.
	if (system(command.c_str()))
data/relion-3.1.0/src/ctffind_runner.cpp:796:6:  [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.
	if (system(command.c_str()))
data/relion-3.1.0/src/displayer.cpp:1084:12:  [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 res = system(cl.c_str());
data/relion-3.1.0/src/displayer.cpp:1166:12:  [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 res = system(cl.c_str());
data/relion-3.1.0/src/displayer.cpp:1187:12:  [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 res = system(cl.c_str());
data/relion-3.1.0/src/displayer.cpp:1211:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/displayer.cpp:1217:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/displayer.cpp:1444:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/displayer.cpp:2007:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/displayer.cpp:2503:12:  [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 res = system(cl.c_str());
data/relion-3.1.0/src/exp_model.cpp:553:7:  [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.
		if (system(command.c_str()))
data/relion-3.1.0/src/exp_model.cpp:561:8:  [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.
			if (system(command.c_str()))
data/relion-3.1.0/src/exp_model.cpp:584:7:  [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.
		if (system(command.c_str()))
data/relion-3.1.0/src/exp_model.cpp:743:7:  [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.
		if (system(command.c_str()))
data/relion-3.1.0/src/filename.cpp:61:3:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		sprintf(aux_str, tmp_fileformat.c_str(), no);
data/relion-3.1.0/src/filename.cpp:81:3:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
		sprintf(aux_str, tmp_fileformat.c_str(), no);
data/relion-3.1.0/src/gui_entries.cpp:377:2:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
	strcpy(relname2, replace2.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:63:17:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:210:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:324:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:1442:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:1467:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:1846:11:  [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 res= system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:2395:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:2411: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.
        int res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:3128:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/gui_mainwindow.cpp:3337:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/helix.cpp:3819:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:118:13:  [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 ret = system(command.c_str());
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:277:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/jaz/gravis/tImage.h:177:9:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
      T access(const int& x, const int& y) const
data/relion-3.1.0/src/jaz/gravis/tImage.h:186:9:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
      T access(const int& x, const int& y) const
data/relion-3.1.0/src/jaz/gravis/tImage.h:188:16:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
        return access::Repeat::getPixel(*this, x, y);
data/relion-3.1.0/src/jaz/gravis/tImage.h:245:41:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
                sum += kernel(kx, ky) * access<AccessMethod>(kx-klmargin+c, ky-ktmargin+r);
data/relion-3.1.0/src/jaz/gravis/tImage.h:261:42:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
        return (*this).template convolve<access::Repeat>(kernel);
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:99:19:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
          if (out.access(x+l-w,y+k-w)+dm(l,k) < out(x,y)) {                                                \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:100:35:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
            out(x,y) = sqrt(sqr(p.access(x+l-w,y+k-w)[1] - y) + sqr(p.access(x+l-w,y+k-w)[0] - x));        \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:100:71:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
            out(x,y) = sqrt(sqr(p.access(x+l-w,y+k-w)[1] - y) + sqr(p.access(x+l-w,y+k-w)[0] - x));        \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:101:24:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
            p(x,y) = p.access(x+l-w,y+k-w);                                                                \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:183:19:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
          if (out.access(x+l-w,y+k-w)+dm(l,k) < out(x,y)) {                                                \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:184:35:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
            out(x,y) = sqrt(sqr(p.access(x+l-w,y+k-w)[1] - y) + sqr(p.access(x+l-w,y+k-w)[0] - x));        \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:184:71:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
            out(x,y) = sqrt(sqr(p.access(x+l-w,y+k-w)[1] - y) + sqr(p.access(x+l-w,y+k-w)[0] - x));        \
data/relion-3.1.0/src/jaz/gravis/tImage/distance_transform.h:185:24:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
            p(x,y) = p.access(x+l-w,y+k-w);                                                                \
data/relion-3.1.0/src/jaz/motion/motion_estimator.cpp:265:14:  [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 ret = system(command.c_str());
data/relion-3.1.0/src/jaz/motion/motion_param_estimator.cpp:311:12:  [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 ret = system(command.c_str());
data/relion-3.1.0/src/manualpicker.cpp:134:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/manualpicker.cpp:163:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/metadata_table.cpp:370:4:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
			strcpy(temp, value.c_str());
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:324:5:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
				strcpy(buffer, didS.c_str());
data/relion-3.1.0/src/motioncorr_runner.cpp:342:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/motioncorr_runner.cpp:583:6:  [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.
	if (system(command.c_str()))
data/relion-3.1.0/src/multidim_array.h:4182: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.
        int res = system((static_cast<std::string>("(gnuplot PPP") + fn_tmp +
data/relion-3.1.0/src/multidim_array.h:4200: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.
        int res = system((static_cast< std::string >("xmipp_edit -i " + nam +
data/relion-3.1.0/src/particle_subtractor.cpp:93:13:  [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 res = system(("mkdir -p " + fn_out + "Particles").c_str());
data/relion-3.1.0/src/pipeline_jobs.cpp:659:14:  [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 res = system(makedirs.c_str());
data/relion-3.1.0/src/pipeline_jobs.cpp:2848:235:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
	joboptions["nr_pool"] = JobOption("Number of pooled particles:", 3, 1, 16, 1, "Particles are processed in individual batches by MPI slaves. During each batch, a stack of particle images is only opened and closed once to improve disk access times. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2850:52:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
This may improve performance on systems where disk access, and particularly metadata handling of disk access, is a problem. It has a modest cost of increased RAM usage.");
data/relion-3.1.0/src/pipeline_jobs.cpp:2850:103:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
This may improve performance on systems where disk access, and particularly metadata handling of disk access, is a problem. It has a modest cost of increased RAM usage.");
data/relion-3.1.0/src/pipeline_jobs.cpp:2853:227:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
	joboptions["do_preread_images"] = JobOption("Pre-read all particles into RAM?", false, "If set to Yes, all particle images will be read into computer memory, which will greatly speed up calculations on systems with slow disk access. However, one should of course be careful with the amount of RAM available. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2855:110:  [4] (race) access:
  This usually indicates a security flaw. If an attacker can change anything
  along the path between the call to access() and the file's actual use
  (e.g., by moving files), the attacker can exploit the race condition
  (CWE-362/CWE-367!). Set up the correct permissions (e.g., using setuid())
  and try to open the file directly.
Remember that running a single MPI slave on each node that runs as many threads as available cores will have access to all available RAM. \n \n If parallel disc I/O is set to No, then only the master reads all particles into RAM and sends those particles through the network to the MPI slaves during the refinement iterations.");
data/relion-3.1.0/src/pipeline_jobs.cpp:2865:204:  [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.
This will affect the time it takes between the progress-bar in the expectation step reaching its end (the mouse gets to the cheese) and the start of the ensuing maximisation step. It will depend on your system setup which is most efficient.");
data/relion-3.1.0/src/pipeliner.cpp:227:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:309:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:318:8:  [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.
	res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:509:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:648:13:  [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 res = system(final_command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1105:10:  [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.
			res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1373:17:  [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 res = std::system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1377:14:  [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.
		res = std::system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1420:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1671:14:  [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 res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1719:11:  [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.
				res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1723:10:  [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.
			res = system(command.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1738:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/preprocessing.cpp:455:14:  [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 res = system(("mkdir -p " + fn_dir).c_str());
data/relion-3.1.0/src/preprocessing_mpi.cpp:93:16:  [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 res = system(("mkdir -p " + fn_dir).c_str());
data/relion-3.1.0/src/rwMRC.h:439:2:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
	strcat(label,PACKAGE_VERSION);
data/relion-3.1.0/src/scheduler.cpp:464: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 res = system(mycommand.c_str());
data/relion-3.1.0/src/scheduler.cpp:468:13:  [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 res = system(mycommand.c_str());
data/relion-3.1.0/src/scheduler.cpp:474:13:  [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 res = system(mycommand.c_str());
data/relion-3.1.0/src/scheduler.cpp:1242:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/scheduler.cpp:1338:12:  [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 res = system(command.c_str());
data/relion-3.1.0/src/scheduler.cpp:1383:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/scheduler.cpp:1399:13:  [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 res = system(command.c_str());
data/relion-3.1.0/src/symmetries.cpp:99:6:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
    	strcpy(line,fileContent[n].c_str());
data/relion-3.1.0/src/symmetries.cpp:135:9:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
        strcpy(line,fileContent[n].c_str());
data/relion-3.1.0/src/tiff_converter.cpp:381: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(("mkdir -p " + fn_out.beforeLastOf("/")).c_str());
data/relion-3.1.0/src/tiff_converter.cpp:462:4:  [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(("mkdir -p " + fn_tiff.beforeLastOf("/")).c_str());
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:234:19:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
					char* penv = getenv ("RELION_GCTF_EXECUTABLE");
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:269:19:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
					char* penv = getenv ("RELION_CTFFIND_EXECUTABLE");
data/relion-3.1.0/src/backprojector.cpp:1272:18:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char *my_exec = getenv ("RELION_EXTERNAL_RECONSTRUCT_EXECUTABLE");
data/relion-3.1.0/src/ctffind_runner.cpp:102:10:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
		penv = getenv("RELION_CTFFIND_EXECUTABLE");
data/relion-3.1.0/src/ctffind_runner.cpp:110:10:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
		penv = getenv("RELION_GCTF_EXECUTABLE");
data/relion-3.1.0/src/ctffind_runner.cpp:117:15:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	shell_name = getenv("RELION_SHELL");
data/relion-3.1.0/src/displayer.cpp:1192:36:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char * default_pdf_viewer = getenv ("RELION_PDFVIEWER_EXECUTABLE");
data/relion-3.1.0/src/exp_model.cpp:228:3:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
		srand(seed);
data/relion-3.1.0/src/exp_model.cpp:356:3:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
		srand(seed);
data/relion-3.1.0/src/funcs.cpp:575:6:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    	srand(static_cast <unsigned> (seed) );
data/relion-3.1.0/src/funcs.cpp:580:2:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
	srand(static_cast <unsigned> (time(NULL)) );
data/relion-3.1.0/src/gui_entries.h:83:5:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	( (getenv ("RELION_QSUB_EXTRA_COUNT"))? \
data/relion-3.1.0/src/gui_entries.h:84:20:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	(std::max(0,(atoi(getenv ("RELION_QSUB_EXTRA_COUNT"))-4))*STEPY) : 0 )
data/relion-3.1.0/src/gui_jobwindow.cpp:41:37:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * my_allow_change_dedicated = getenv ("RELION_ALLOW_CHANGE_MINIMUM_DEDICATED");
data/relion-3.1.0/src/gui_jobwindow.cpp:160:28:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * extra_count_text = getenv ("RELION_QSUB_EXTRA_COUNT");
data/relion-3.1.0/src/gui_mainwindow.cpp:1828:37:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
		const char * default_pdf_viewer = getenv ("RELION_PDFVIEWER_EXECUTABLE");
data/relion-3.1.0/src/jaz/motion/motion_param_estimator.cpp:167:5:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    srand(seed);
data/relion-3.1.0/src/metadata_table.cpp:475:3:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
		srand (time(NULL));			  /* initialize random seed: */
data/relion-3.1.0/src/motioncorr_runner.cpp:162:11:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
			penv = getenv ("RELION_MOTIONCOR2_EXECUTABLE");
data/relion-3.1.0/src/pipeline_jobs.cpp:562:29:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
		char * extra_count_text = getenv ("RELION_QSUB_EXTRA_COUNT");
data/relion-3.1.0/src/pipeline_jobs.cpp:698:34:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
				const char *default_mpirun = getenv("RELION_MPIRUN");
data/relion-3.1.0/src/pipeline_jobs.cpp:720:19:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * my_warn = getenv ("RELION_ERROR_LOCAL_MPI");
data/relion-3.1.0/src/pipeline_jobs.cpp:850:30:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char *mpi_max_input = getenv("RELION_MPI_MAX");
data/relion-3.1.0/src/pipeline_jobs.cpp:852:27:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * qsub_nrmpi_text = getenv ("RELION_QSUB_NRMPI");
data/relion-3.1.0/src/pipeline_jobs.cpp:859:33:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char *thread_max_input = getenv("RELION_THREAD_MAX");
data/relion-3.1.0/src/pipeline_jobs.cpp:861:27:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * qsub_nrthr_text = getenv ("RELION_QSUB_NRTHREADS");
data/relion-3.1.0/src/pipeline_jobs.cpp:869:33:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char * use_queue_input = getenv("RELION_QUEUE_USE");
data/relion-3.1.0/src/pipeline_jobs.cpp:875:31:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char * default_queue = getenv("RELION_QUEUE_NAME");
data/relion-3.1.0/src/pipeline_jobs.cpp:885:33:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char * default_command = getenv("RELION_QSUB_COMMAND");
data/relion-3.1.0/src/pipeline_jobs.cpp:896:28:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * extra_count_text = getenv ("RELION_QSUB_EXTRA_COUNT");
data/relion-3.1.0/src/pipeline_jobs.cpp:903:23:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
		char * extra_text = getenv ((std::string("RELION_QSUB_EXTRA")+i_str).c_str());
data/relion-3.1.0/src/pipeline_jobs.cpp:907:26:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
			char *extra_default = getenv(query_default.c_str());
data/relion-3.1.0/src/pipeline_jobs.cpp:914:23:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
			char *extra_help = getenv(query_help.c_str());
data/relion-3.1.0/src/pipeline_jobs.cpp:929:28:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * default_location = getenv("RELION_QSUB_TEMPLATE");
data/relion-3.1.0/src/pipeline_jobs.cpp:955:32:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * my_minimum_dedicated = getenv ("RELION_MINIMUM_DEDICATED");
data/relion-3.1.0/src/pipeline_jobs.cpp:1277:28:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * default_location = getenv ("RELION_MOTIONCOR2_EXECUTABLE");
data/relion-3.1.0/src/pipeline_jobs.cpp:1481:21:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	default_location = getenv ("RELION_CTFFIND_EXECUTABLE");
data/relion-3.1.0/src/pipeline_jobs.cpp:1501:21:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	default_location = getenv ("RELION_GCTF_EXECUTABLE");
data/relion-3.1.0/src/pipeline_jobs.cpp:2593:32:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char *default_scratch = getenv("RELION_SCRATCH_DIR");
data/relion-3.1.0/src/pipeline_jobs.cpp:2822:108:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
between the Fourier components that are not modelled. When set to No, then the solvent area is filled with random noise, which prevents introducing correlations.\
data/relion-3.1.0/src/pipeline_jobs.cpp:2823:144:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
High-resolution refinements (e.g. ribosomes or other large complexes in 3D auto-refine) tend to work better when filling the solvent area with random noise (i.e. setting this option to No), refinements of smaller complexes and most classifications go better when using zeros (i.e. setting this option to Yes).");
data/relion-3.1.0/src/pipeline_jobs.cpp:3202:32:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char *default_scratch = getenv("RELION_SCRATCH_DIR");
data/relion-3.1.0/src/pipeline_jobs.cpp:3651:32:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char *default_scratch = getenv("RELION_SCRATCH_DIR");
data/relion-3.1.0/src/pipeline_jobs.cpp:3981:32:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char *default_scratch = getenv("RELION_SCRATCH_DIR");
data/relion-3.1.0/src/pipeline_jobs.cpp:4668:28:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	char * default_location = getenv ("RELION_RESMAP_EXECUTABLE");
data/relion-3.1.0/src/pipeliner.cpp:1359:36:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
	const char * default_pdf_viewer = getenv ("RELION_PDFVIEWER_EXECUTABLE");
data/relion-3.1.0/src/CPlot2D.cpp:158: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).
    outputFile.open(fileName.c_str());
data/relion-3.1.0/src/CPlot2D.cpp:733:9:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
        sprintf(m_cXAxisLabelFormat,"%%.%df",nfrac);
data/relion-3.1.0/src/CPlot2D.cpp:734: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.
        char temp[20];
data/relion-3.1.0/src/CPlot2D.cpp:743:9:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
        sprintf(m_cYAxisLabelFormat,"%%.%df",nfrac);
data/relion-3.1.0/src/CPlot2D.cpp:744: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.
        char temp[20];
data/relion-3.1.0/src/CPlot2D.h:1001:6:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
     char m_cXAxisLabelFormat[10]; /*!< Format of labels along the x axis. */
data/relion-3.1.0/src/CPlot2D.h:1002:6:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
     char m_cYAxisLabelFormat[10]; /*!< Format of labels along the y axis. */
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:314:25:  [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 const unsigned char subpix[8][4] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:317:18:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  const unsigned char subpath[8][4] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:320:25:  [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 const unsigned char face2path[12] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:322:25:  [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 const unsigned char face2peanoface[12] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:342:25:  [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 const unsigned char subpix[8][4] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:345:25:  [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 const unsigned char subpath[8][4] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:348:25:  [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 const unsigned char face2path[12] = {
data/relion-3.1.0/src/Healpix_2.15a/healpix_base.cc:350:25:  [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 const unsigned char peanoface2face[12] = {
data/relion-3.1.0/src/acc/acc_backprojector_impl.h:95: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(r, d_mdlReal,   mdlXYZ * sizeof(XFLOAT));
data/relion-3.1.0/src/acc/acc_backprojector_impl.h:96: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(i, d_mdlImag,   mdlXYZ * sizeof(XFLOAT));
data/relion-3.1.0/src/acc/acc_backprojector_impl.h:97: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(w, d_mdlWeight, mdlXYZ * sizeof(XFLOAT));
data/relion-3.1.0/src/acc/acc_helper_functions_impl.h:1810: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(&d_out[0], &d_in[0], oX*oY*oZ*Npsi*sizeof(ACCCOMPLEX));
data/relion-3.1.0/src/acc/acc_ptr.h:429: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( newArr, hPtr, newSize * sizeof(T) );
data/relion-3.1.0/src/acc/acc_ptr.h:431: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( newArr, hPtr, size * sizeof(T) );  
data/relion-3.1.0/src/acc/acc_ptr.h:668: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 ( dstDevPtr, hPtr, size * sizeof(T));
data/relion-3.1.0/src/acc/acc_ptr.h:831:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
			f.open(fileName.c_str());
data/relion-3.1.0/src/acc/acc_ptr.h:842:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
			f.open(fileName.c_str());
data/relion-3.1.0/src/acc/acc_ptr.h:851:5:  [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(fileName.c_str());
data/relion-3.1.0/src/acc/acc_ptr.h:1111: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 ( &hPtr[current_packed_pos], ptr.getHostPtr(), ptr.getSize() * sizeof(T));
data/relion-3.1.0/src/acc/cuda/cuda_benchmark_utils.h:54:28:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	cuda_cpu_benchmark_fPtr = fopen(fnm_cpu.str().c_str(),"a");
data/relion-3.1.0/src/acc/cuda/cuda_benchmark_utils.h:56:28:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	cuda_gpu_benchmark_fPtr = fopen(fnm_gpu.str().c_str(),"a");
data/relion-3.1.0/src/acc/data_types.h:148: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(ptr, img.data, sizeof(T)*img.nzyxdim);
data/relion-3.1.0/src/acc/data_types.h:168: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(img.data, ptr, sizeof(T)*img.nzyxdim);
data/relion-3.1.0/src/acc/utilities_impl.h:21:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:39:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:57:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:75:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:93:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:111:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:129:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:147:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:165:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:183:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/acc/utilities_impl.h:201:13:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *fp = fopen(name, "w");
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:186:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open(fn_map.c_str(), std::ios::out);
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:413:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open(fn_map.c_str(), std::ios::out);
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:437:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open(fn_map.c_str(), std::ios::out);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:240: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).
		ofs.open(fn_cmd.c_str(), std::ofstream::out | std::ofstream::app);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:243: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 nodename[64] = "undefined";
data/relion-3.1.0/src/apps/import.cpp:186: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).
			fh.open((fn_odir + fn_out).c_str(), std::ios::out);
data/relion-3.1.0/src/apps/import.cpp:234: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).
			fh.open((fn_odir + fn_out).c_str(), std::ios::out);
data/relion-3.1.0/src/apps/maingui.cpp:37: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 my_dir[_MAX_PATH];
data/relion-3.1.0/src/apps/maingui.cpp:38: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 short_dir[49];
data/relion-3.1.0/src/apps/maingui.cpp:60: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 titletext[256];
data/relion-3.1.0/src/apps/maingui.cpp:65:2:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
	strcat(titletext,": ");
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:371:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
				fin1.open(fn2.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:396: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).
			fin1.open(fn2.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:448:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
				fin1.open(fn2.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:546: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).
		fout1.open(fn_ctf_recon.c_str(), std::ios_base::out);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:621: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).
			fin1.open(fn_tilt_txt.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:641:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
				fin1.open(fn_trial_tilt_txt.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:790: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).
			fin1.open(fn_order.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:902:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
				fin1.open(fn_coords.c_str(), std::ios_base::in);
data/relion-3.1.0/src/apps/tiltpair_plot.cpp:88:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh_eps.open(fn_eps.c_str(), std::ios::out);
data/relion-3.1.0/src/apps/tomo_test.cpp:96: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 text[4096];
data/relion-3.1.0/src/assembly.cpp:210: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 line[100];
data/relion-3.1.0/src/assembly.cpp:252:4:  [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 snum[6] = "", atomname[5] = "", altLoc[2] = "", resname[4] = "", chainID[2] = "";
data/relion-3.1.0/src/assembly.cpp:254:4:  [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 insertion_residue_code[2] = "";
data/relion-3.1.0/src/assembly.cpp:256:4:  [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 segID[5] = "", element[3] = "", charge[3] = "";
data/relion-3.1.0/src/assembly.cpp:397:9:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	file = fopen(filename.c_str(), "w");
data/relion-3.1.0/src/assembly.cpp:430: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 atomname[5] = "", element[2] = "";
data/relion-3.1.0/src/backprojector.cpp:1264:5:  [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).
	fh.open((fn_star).c_str(), std::ios::out);
data/relion-3.1.0/src/ctffind_runner.cpp:297: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 temp [180];
data/relion-3.1.0/src/ctffind_runner.cpp:615:5:  [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).
	fh.open((fn_script).c_str(), std::ios::out);
data/relion-3.1.0/src/ctffind_runner.cpp:696:5:  [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).
	fh.open((fn_script).c_str(), std::ios::out);
data/relion-3.1.0/src/displayer.cpp:1438: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 my_dir[200];
data/relion-3.1.0/src/displayer.cpp:2361:5:  [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).
	fh.open(fn.c_str(), std::ios::out);
data/relion-3.1.0/src/exp_model.cpp:538: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 nodename[64] = "undefined";
data/relion-3.1.0/src/exp_model.cpp:568: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 nodename[64] = "undefined";
data/relion-3.1.0/src/exp_model.cpp:670: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 nodename[64] = "undefined";
data/relion-3.1.0/src/exp_model.cpp:1165:5:  [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).
	fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/fftw.cpp:328: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(MULTIDIM_ARRAY(fFourier),MULTIDIM_ARRAY(inputFourier),
data/relion-3.1.0/src/fftw.h:244: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(MULTIDIM_ARRAY(V),MULTIDIM_ARRAY(fFourier),
data/relion-3.1.0/src/filename.cpp:56: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 aux_str[numberlength+1];
data/relion-3.1.0/src/filename.cpp:76: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 aux_str[numberlength+1];
data/relion-3.1.0/src/filename.cpp:488:5:  [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).
	fh.open(fn.c_str(), std::ios::out);
data/relion-3.1.0/src/filename.cpp:595: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 linkname[4096];
data/relion-3.1.0/src/flex_analyser.cpp:660:5:  [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).
	fh.open((fnt).c_str(), std::ios::out);
data/relion-3.1.0/src/gpu_utils/cuda_benchmark_utils.h:54:28:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	cuda_cpu_benchmark_fPtr = fopen(fnm_cpu.str().c_str(),"a");
data/relion-3.1.0/src/gpu_utils/cuda_benchmark_utils.h:56:28:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	cuda_gpu_benchmark_fPtr = fopen(fnm_gpu.str().c_str(),"a");
data/relion-3.1.0/src/gpu_utils/cuda_mem_utils.h:1069:6:  [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( newArr, h_ptr, newSize * sizeof(T) );
data/relion-3.1.0/src/gpu_utils/cuda_mem_utils.h:1291:5:  [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(fileName.c_str());
data/relion-3.1.0/src/gpu_utils/cuda_mem_utils.h:1302:5:  [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(fileName.c_str());
data/relion-3.1.0/src/gui_entries.cpp:331: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 relname[FL_PATH_MAX];
data/relion-3.1.0/src/gui_entries.cpp:370: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 relname[FL_PATH_MAX];
data/relion-3.1.0/src/gui_entries.cpp:376: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 relname2[FL_PATH_MAX];
data/relion-3.1.0/src/gui_entries.h:84:15:  [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).
	(std::max(0,(atoi(getenv ("RELION_QSUB_EXTRA_COUNT"))-4))*STEPY) : 0 )
data/relion-3.1.0/src/gui_jobwindow.cpp:161:51:  [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 char extra_count_val = (extra_count_text ? atoi(extra_count_text) : 2);
data/relion-3.1.0/src/gui_mainwindow.cpp:3043: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 relname[FL_PATH_MAX];
data/relion-3.1.0/src/gui_mainwindow.cpp:3142:5:  [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).
	fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/healpix_sampling.cpp:237: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).
    fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/healpix_sampling.cpp:593: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).
    out.open (fn_bild.c_str());
data/relion-3.1.0/src/healpix_sampling.cpp:623: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).
    out.open (fn_bild.c_str());
data/relion-3.1.0/src/healpix_sampling.cpp:2009: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).
    fh_bild.open(fn_bild.c_str(), std::ios::out);
data/relion-3.1.0/src/helix.cpp:2412:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_in.c_str(), std::ios_base::in);
data/relion-3.1.0/src/helix.cpp:2527:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_in.c_str(), std::ios_base::in);
data/relion-3.1.0/src/helix.cpp:2668:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_in.c_str(), std::ios_base::in);
data/relion-3.1.0/src/helix.cpp:2792:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_in.c_str(), std::ios_base::in);
data/relion-3.1.0/src/helix.cpp:3625: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).
		fout.open("simulate-3d-subtomos.sh", std::ios::out);
data/relion-3.1.0/src/helix.cpp:3627: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).
		fout.open("simulate-2d-segments.sh", std::ios::out);
data/relion-3.1.0/src/helix.cpp:5090:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buf_word[4], buf_qword[16], tmp_char;
data/relion-3.1.0/src/helix.cpp:5182: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).
			fin.open(fn_in.c_str(), std::ios_base::in|std::ios_base::binary);
data/relion-3.1.0/src/helix.cpp:5341: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).
			fin.open(fn_in.c_str(), std::ios_base::in);
data/relion-3.1.0/src/helix.cpp:5508: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[100];
data/relion-3.1.0/src/helix.cpp:5512:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_in.c_str(), std::ios_base::in|std::ios_base::binary);
data/relion-3.1.0/src/helix.cpp:5515: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).
	fout.open(fn_out.c_str(), std::ios_base::out|std::ios_base::binary);
data/relion-3.1.0/src/image.h:120: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(buf, tiff_handle->buf + tiff_handle->pos, read_size);
data/relion-3.1.0/src/image.h:309:29:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		if ((!isTiff && ((fimg  = fopen(fileName.c_str(), wmChar.c_str())) == NULL))
data/relion-3.1.0/src/image.h:318:16:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
			if ((fhed = fopen(headName.c_str(), wmChar.c_str())) == NULL)
data/relion-3.1.0/src/image.h:564:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:577:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:591:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:605:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:619:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:633:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:647:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:661: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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:675:6:  [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(ptrDest, page, pageSize * sizeof(T));
data/relion-3.1.0/src/image.h:721:6:  [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(page, srcPtr, pageSize*sizeof(T));
data/relion-3.1.0/src/image.h:735:6:  [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(page, srcPtr, pageSize*sizeof(T));
data/relion-3.1.0/src/image.h:749:6:  [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(page, srcPtr, pageSize*sizeof(T));
data/relion-3.1.0/src/image.h:763:6:  [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(page, srcPtr, pageSize*sizeof(T));
data/relion-3.1.0/src/image.h:777:6:  [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(page, srcPtr, pageSize*sizeof(T));
data/relion-3.1.0/src/image.h:973: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).
			if ( ( mFd = open(filename.c_str(), O_RDWR, S_IRUSR | S_IWUSR) ) == -1 )
data/relion-3.1.0/src/jaz/archive/motion_refinement.cpp:658: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.
        char dummy[4069];
data/relion-3.1.0/src/jaz/archive/motion_refinement.cpp:663:13:  [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 dummy[4069];
data/relion-3.1.0/src/jaz/ctf/defocus_estimator.cpp:223: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 title[256];
data/relion-3.1.0/src/jaz/ctf_helper.cpp:52: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 text[4096];
data/relion-3.1.0/src/jaz/ctf_helper.cpp:96:4:  [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 text[4096];
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:176: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.
          char magic[8];                  // 0
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:177: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.
          char type[16];                  // 8
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:181: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.
          char reserved1[1];               // 31
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:182: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.
          char reserved2[32];              // 32
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:270:16:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
          std::memcpy(h.magic, magic().data(), magic().size());
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:271:16:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
          std::memcpy(h.type, ArrayA_private::TName<T>::name().data(), ArrayA_private::TName<T>::name().size());
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:292:16:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
          std::memcpy(h.magic, magic().data(), magic().size());
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:293:16:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
          std::memcpy(h.type, ArrayA_private::TName<T>::name().data(), ArrayA_private::TName<T>::name().size());
data/relion-3.1.0/src/jaz/gravis/io/array/le.h:48:18:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
      FILE* in = fopen(filename.c_str(), "rb");
data/relion-3.1.0/src/jaz/gravis/io/array/le.h:75:19:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
      FILE* out = fopen(filename.c_str(), "wb");
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:50:28:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	    a.resize(mxGetN(mx)); memcpy(&a[0], mxGetPr(mx), channels*sizeof(type) * a.size());    }                                                                              \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:55:28:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	    a.resize(mxGetN(mx)); memcpy(&a[0], mxGetPr(mx), channels*sizeof(type) * a.size());    }                                                                              \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:60:28:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	    a.resize(mxGetN(mx)); memcpy(&a[0], mxGetPr(mx), channels*sizeof(type) * a.size());    }                                                                              \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:65:28:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	    a.resize(mxGetN(mx)); memcpy(&a[0], mxGetPr(mx), channels*sizeof(type) * a.size());    }                                                                              \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:70:28:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	    a.resize(mxGetN(mx)); memcpy(&a[0], mxGetPr(mx), channels*sizeof(type) * a.size());    }                                                                              \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:75:28:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	    a.resize(mxGetN(mx)); memcpy(&a[0], mxGetPr(mx), channels*sizeof(type) * a.size());    }
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:91:145:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	static inline mxArray *mxFromArray(const tArray<type> &a)                 { mxArray *mx = mxCreateNumericMatrix(1, a.size(), classid, mxREAL); memcpy(mxGetPr(mx), &a[0], sizeof(type) * a.size());   return mx; } \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:92:145:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	static inline mxArray *mxFromArray(const tArray< t2Vector< type > > &a)   { mxArray *mx = mxCreateNumericMatrix(2, a.size(), classid, mxREAL); memcpy(mxGetPr(mx), &a[0], 2*sizeof(type) * a.size()); return mx; } \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:93:145:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	static inline mxArray *mxFromArray(const tArray< t3Vector< type > > &a)   { mxArray *mx = mxCreateNumericMatrix(3, a.size(), classid, mxREAL); memcpy(mxGetPr(mx), &a[0], 3*sizeof(type) * a.size()); return mx; } \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:94:145:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	static inline mxArray *mxFromArray(const tArray< t4Vector< type > > &a)   { mxArray *mx = mxCreateNumericMatrix(4, a.size(), classid, mxREAL); memcpy(mxGetPr(mx), &a[0], 4*sizeof(type) * a.size()); return mx; } \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:95:145:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	static inline mxArray *mxFromArray(const tArray< tRGB< type > > &a)       { mxArray *mx = mxCreateNumericMatrix(3, a.size(), classid, mxREAL); memcpy(mxGetPr(mx), &a[0], 3*sizeof(type) * a.size()); return mx; } \
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:96:145:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	static inline mxArray *mxFromArray(const tArray< tRGBA< type > > &a)      { mxArray *mx = mxCreateNumericMatrix(4, a.size(), classid, mxREAL); memcpy(mxGetPr(mx), &a[0], 4*sizeof(type) * a.size()); return mx; }
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:101:11:  [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(mxGetPr(mx), &a[0], 2*sizeof(int) * a.size());
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:107:11:  [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(mxGetPr(mx), &a[0], 3*sizeof(int) * a.size());
data/relion-3.1.0/src/jaz/gravis/io/array/networkByteOrder.h:45:22:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
          FILE* in = fopen(filename.c_str(), "rb");
data/relion-3.1.0/src/jaz/gravis/io/array/networkByteOrder.h:84:23:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
          FILE* out = fopen(filename.c_str(), "wb");
data/relion-3.1.0/src/jaz/gravis/io/image/f.h:40: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.
          char name[128];
data/relion-3.1.0/src/jaz/gravis/io/image/f.h:47: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.
          char reserved[360];
data/relion-3.1.0/src/jaz/gravis/io/mesh/OBJWriter.h:71:19:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
        FILE* f = fopen(filename.c_str(),"r");
data/relion-3.1.0/src/jaz/gravis/io/mesh/msh.h:177:13:  [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 _id_start[MSH_CONSTANTS::id_start.size()+1];
data/relion-3.1.0/src/jaz/gravis/io/mesh/msh.h:178:13:  [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 _id_end[MSH_CONSTANTS::id_end.size()+1];
data/relion-3.1.0/src/jaz/gravis/tArray.h:285: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(lhs.p_data, p_data, length*sizeof(T));
data/relion-3.1.0/src/jaz/gravis/tImage.h:439: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(result.data(), data(), wd*ht*sizeof(T));
data/relion-3.1.0/src/jaz/gravis/tImage.h:695: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 header[512];
data/relion-3.1.0/src/jaz/gravis/tMM.h:67: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.
        char mmid0[33] = "GRAVIS_MORPHABLE_MODEL          ";
data/relion-3.1.0/src/jaz/gravis/tMM.h:68: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.
        char mmid1[33] = "                                ";
data/relion-3.1.0/src/jaz/gravis/tMM.h:92: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.
        char mmid0[33] = "GRAVIS_MORPHABLE_MODEL          ";
data/relion-3.1.0/src/jaz/gravis/tMM.h:93: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.
        char mmid1[33] = "                                ";
data/relion-3.1.0/src/jaz/gravis/tMM.h:117: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.
        char mmid2[33] = "                                ";
data/relion-3.1.0/src/jaz/gravis/tMM.h:286: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.
        char mmid[33] = "GRAVIS_MORPHABLE_MODEL          ";
data/relion-3.1.0/src/jaz/gravis/tMatrix.h:78: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( data, o.data, h*w*sizeof(T) );
data/relion-3.1.0/src/jaz/gravis/tMatrix.h:93: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( data, o.data, h*w*sizeof(T) );
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:106:11:  [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(t, s, sz*sizeof(T));
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1156: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( &Out(row, col+j), &In(0, j), sizeof(In[0])*h );
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1169:7:  [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(row, 0), &In(0, 0), sizeof(In[0])*h );
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1181:7:  [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[row], &In[0], sizeof(In[0])*h );
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1295:7:  [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 mmid0[33] = "GRAVIS_VAR_MATRIX               ";
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1296:7:  [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 mmid1[33] = "GRAVIS_VAR_MATRIX               ";
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1320:7:  [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 mmid[33] = "GRAVIS_VAR_MATRIX               ";
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1339:7:  [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 mmid0[33] = "GRAVIS_VAR_VECTOR              ";
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1340:7:  [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 mmid1[33] = "GRAVIS_VAR_VECTOR              ";
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1363:7:  [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 mmid[33] = "GRAVIS_VAR_VECTOR               ";
data/relion-3.1.0/src/jaz/img_proc/color_helper.cpp:61: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).
	outputFile.open(fn_out.c_str());
data/relion-3.1.0/src/jaz/lbfgs/lbfgs.c:242: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(param, &_defparam, sizeof(*param));
data/relion-3.1.0/src/jaz/motion/motion_estimator.cpp:756: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 title[256];
data/relion-3.1.0/src/jaz/parallel_ft.cpp:273: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(MULTIDIM_ARRAY(fFourier),MULTIDIM_ARRAY(inputFourier),
data/relion-3.1.0/src/jaz/parallel_ft.h:148:13:  [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(MULTIDIM_ARRAY(V),MULTIDIM_ARRAY(fFourier),
data/relion-3.1.0/src/jaz/tomo/projection_helper.cpp:151: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 text[4096];
data/relion-3.1.0/src/jaz/vtk_helper.cpp:598: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 text[4096];
data/relion-3.1.0/src/local_symmetry.cpp:321:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_in.c_str(), std::ios_base::in);
data/relion-3.1.0/src/local_symmetry.cpp:326: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).
	fout.open(fn_out.c_str(), std::ios_base::out);
data/relion-3.1.0/src/local_symmetry.cpp:772:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fin.open(fn_info.c_str(), std::ios_base::in);
data/relion-3.1.0/src/local_symmetry.cpp:1043: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).
	fout.open(fn_info.c_str(), std::ios::out);
data/relion-3.1.0/src/local_symmetry.cpp:2773:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	ofs.open(fn_cmd.c_str(), std::ofstream::out | std::ofstream::app);
data/relion-3.1.0/src/local_symmetry.cpp:2776: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 nodename[64] = "undefined";
data/relion-3.1.0/src/matrix2d.h:199:13:  [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(mdata,op1.mdata,op1.mdim*sizeof(T));
data/relion-3.1.0/src/matrix2d.h:781: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).
        fhOut.open(fn.c_str());
data/relion-3.1.0/src/metadata_table.cpp:225:2:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
	char buffer[14];
data/relion-3.1.0/src/metadata_table.cpp:1269:5:  [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).
	fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/micrograph_model.cpp:171:5:  [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).
	fh.open(filename.c_str());
data/relion-3.1.0/src/ml_model.cpp:472:5:  [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).
	fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/ml_model.cpp:1225:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	fh_bild.open(fn_bild.c_str(), std::ios::out);
data/relion-3.1.0/src/ml_optimiser.cpp:1055:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:146:4:  [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[BUFSIZ];
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:163: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[BUFSIZ];
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:313:17:  [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[BUFSIZ];
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:350:6:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
					char buffer[BUFSIZ];
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:829:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
			f.open(fn_tmp.c_str());
data/relion-3.1.0/src/motioncorr_runner.cpp:579:5:  [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).
	fh.open(fn_cmd.c_str(), std::ios::out);
data/relion-3.1.0/src/motioncorr_runner.cpp:685:5:  [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).
	in.open(fn_patch.c_str(), std::ios_base::in);
data/relion-3.1.0/src/motioncorr_runner.cpp:782: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 title[256];
data/relion-3.1.0/src/motioncorr_runner.cpp:954:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	logfile.open(fn_log);
data/relion-3.1.0/src/mpi.cpp:94: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 nodename[64] = "undefined";
data/relion-3.1.0/src/mpi.cpp:287: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 error_string[200];
data/relion-3.1.0/src/multidim_array.h:686: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).
            if ( ( mFd = open(mapFile.c_str(),  O_RDWR | O_CREAT | O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) ) == -1 )
data/relion-3.1.0/src/multidim_array.h:728: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).
            if ( ( mFd = open(mapFile.c_str(),  O_RDWR | O_CREAT | O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) ) == -1 )
data/relion-3.1.0/src/multidim_array.h:917: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(data, old_array, sizeof(T) * nzyxdim);
data/relion-3.1.0/src/multidim_array.h:1041:34:  [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 ( ( new_mFd = open(newMapFile.c_str(),  O_RDWR | O_CREAT | O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) ) == -1 )
data/relion-3.1.0/src/multidim_array.h:1134:34:  [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 ( ( new_mFd = open(newMapFile.c_str(),  O_RDWR | O_CREAT | O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) ) == -1 )
data/relion-3.1.0/src/multidim_array.h:4172:18:  [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).
        fh_gplot.open((static_cast<std::string>("PPP") + fn_tmp +
data/relion-3.1.0/src/multidim_array.h:4210: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).
        out.open(fn.c_str(), std::ios::out | std::ios::binary);
data/relion-3.1.0/src/multidim_array.h:4228: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).
        in.open(fn.c_str(), std::ios::in | std::ios::binary);
data/relion-3.1.0/src/multidim_array.h:4246: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).
        in.open(fn.c_str(), std::ios::in | std::ios::binary);
data/relion-3.1.0/src/multidim_array.h:4267: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).
        out.open(fn.c_str(), std::ios::out);
data/relion-3.1.0/src/multidim_array.h:4280: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).
         in.open(fn.c_str(), std::ios::in);
data/relion-3.1.0/src/multidim_array.h:4310:13:  [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,op1.data,MULTIDIM_SIZE(op1)*sizeof(T));
data/relion-3.1.0/src/pipeline_control.cpp:50:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open(fn.c_str(), std::ios::out);
data/relion-3.1.0/src/pipeline_jobs.cpp:338:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open((myfilename+"run.job").c_str(), std::ios_base::in);
data/relion-3.1.0/src/pipeline_jobs.cpp:481:5:  [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).
	fh.open((myfilename+"job.star").c_str(), std::ios::out);
data/relion-3.1.0/src/pipeline_jobs.cpp:516:5:  [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).
	fh.open(fn_qsub.c_str(), std::ios_base::in);
data/relion-3.1.0/src/pipeline_jobs.cpp:517:5:  [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).
	fo.open(newfilename.c_str(), std::ios::out);
data/relion-3.1.0/src/pipeline_jobs.cpp:563:52:  [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 char extra_count_val = (extra_count_text ? atoi(extra_count_text) : 2);
data/relion-3.1.0/src/pipeline_jobs.cpp:853:49:  [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 char qsub_nrmpi_val = (qsub_nrmpi_text ? atoi(qsub_nrmpi_text) : DEFAULTNRMPI);
data/relion-3.1.0/src/pipeline_jobs.cpp:862:53:  [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 char qsub_nrthreads_val = (qsub_nrthr_text ? atoi(qsub_nrthr_text) : DEFAULTNRTHREADS);
data/relion-3.1.0/src/pipeline_jobs.cpp:897:51:  [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 char extra_count_val = (extra_count_text ? atoi(extra_count_text) : 2);
data/relion-3.1.0/src/pipeliner.cpp:653: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).
		ofs.open (fn_note.c_str(), std::ofstream::out | std::ofstream::app);
data/relion-3.1.0/src/pipeliner.cpp:805:5:  [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).
	fh.open((fn_log).c_str(), std::ios::app);
data/relion-3.1.0/src/pipeliner.cpp:1713:66:  [2] (tmpfile) tmpfile:
  Function tmpfile() has a security flaw on some systems (e.g., older System
  V systems) (CWE-377).
			FileName infile = (ipatt == 0) ? fn_in_dir + myfiles[ifile] : tmpfile;
data/relion-3.1.0/src/pipeliner.cpp:1726:34:  [2] (tmpfile) tmpfile:
  Function tmpfile() has a security flaw on some systems (e.g., older System
  V systems) (CWE-377).
				std::rename(outfile.c_str(), tmpfile.c_str());
data/relion-3.1.0/src/pipeliner.cpp:1939:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open(fn_lock.c_str(), std::ios::out);
data/relion-3.1.0/src/pipeliner.cpp:2118:5:  [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).
	fh.open(fn.c_str(), std::ios::out);
data/relion-3.1.0/src/pipeliner.cpp:2125:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh_del.open(fnt.c_str(), std::ios::out);
data/relion-3.1.0/src/pipeliner.cpp:2743:5:  [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).
	fh.open((fn_out).c_str(), std::ios::out);
data/relion-3.1.0/src/postprocessing.cpp:676:5:  [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).
	fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/postprocessing.cpp:887:5:  [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).
	fh.open((fn_fsc).c_str(), std::ios::out);
data/relion-3.1.0/src/postprocessing.cpp:971:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open((fn_tmp).c_str(), std::ios::out);
data/relion-3.1.0/src/rwIMAGIC.h:57: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 type[4];      // 14      image type
data/relion-3.1.0/src/rwIMAGIC.h:69: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 lastpr[8];      // 27+28     last program writing file
data/relion-3.1.0/src/rwIMAGIC.h:70: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 name[80];       // 29-48     image name
data/relion-3.1.0/src/rwIMAGIC.h:81: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 history[228];      // 199-255   history
data/relion-3.1.0/src/rwIMAGIC.h:283: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(header->lastpr, "Xmipp", 5);
data/relion-3.1.0/src/rwIMAGIC.h:284: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(header->name, filename.c_str(), 80);
data/relion-3.1.0/src/rwMRC.h:76: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 labels[10][80]; // 56-255       10 80-character labels
data/relion-3.1.0/src/rwMRC.h:113: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 map[4];         // 52       identifier for map file ("MAP ")
data/relion-3.1.0/src/rwMRC.h:114: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 machst[4];      // 53           machine stamp
data/relion-3.1.0/src/rwMRC.h:117: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 labels[800];    // 56-255       10 80-character labels
data/relion-3.1.0/src/rwMRC.h:130: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(test, "jbh     ", 8);
data/relion-3.1.0/src/rwMRC.h:431: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 label[MRC_LABEL_LEN] = "Relion ";
data/relion-3.1.0/src/rwMRC.h:441:2:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
	strcat(label, "   ");
data/relion-3.1.0/src/rwSPIDER.h:92: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 fNada2[576]; // empty 700-76-40=624-40-8= 576 bytes
data/relion-3.1.0/src/rwSPIDER.h:94: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 cdat[12];   // 211-213   creation date
data/relion-3.1.0/src/rwSPIDER.h:95: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 ctim[9];  // 214-215   creation time
data/relion-3.1.0/src/rwSPIDER.h:96: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 ctit[160];  // 216-255   title
data/relion-3.1.0/src/rwSPIDER.h:331:5:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
    sprintf(header->ctim, "%02d:%02d:%02d", t->tm_hour, t->tm_min, t->tm_sec);
data/relion-3.1.0/src/rwSPIDER.h:332:5:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
    sprintf(header->cdat, "%02d-%02d-%02d", t->tm_mday, t->tm_mon, t->tm_year);
data/relion-3.1.0/src/scheduler.cpp:650:6:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
		fh.open(fn_lock.c_str(), std::ios::out);
data/relion-3.1.0/src/scheduler.cpp:826:5:  [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).
	fh.open((fn).c_str(), std::ios::out);
data/relion-3.1.0/src/strings.cpp:318: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 aux[15];
data/relion-3.1.0/src/strings.cpp:361: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 aux[15];
data/relion-3.1.0/src/symmetries.cpp:55: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 line[80];
data/relion-3.1.0/src/symmetries.cpp:67:18:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
    if ((fpoii = fopen(fn_sym.c_str(), "r")) == NULL)
data/relion-3.1.0/src/symmetries.cpp:332:4:  [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 auxChar[3];
data/relion-3.1.0/src/symmetries.cpp:372:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/symmetries.cpp:401:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/symmetries.cpp:416:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/symmetries.cpp:431:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/symmetries.cpp:446:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/symmetries.cpp:461:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/symmetries.cpp:476:16:  [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).
       pgOrder=atoi(auxChar);
data/relion-3.1.0/src/tiff_converter.cpp:167: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 msg[256];
data/relion-3.1.0/src/tiff_converter.cpp:270:16:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
	FILE *mrcin = fopen(fn_movie.c_str(), "r");
data/relion-3.1.0/src/tiff_converter.cpp:309:5:  [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(fn_in);
data/relion-3.1.0/src/acc/acc_ml_optimiser_impl.h:230:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					img.read(fn_img);
data/relion-3.1.0/src/acc/acc_ml_optimiser_impl.h:248:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				rec_img.read(fn_recimg);
data/relion-3.1.0/src/acc/acc_ml_optimiser_impl.h:696:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Ictf.read(fn_ctf);
data/relion-3.1.0/src/apps/align_symmetry.cpp:51:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/align_symmetry.cpp:139:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		vol_in.read(fn_in);
data/relion-3.1.0/src/apps/align_symmetry.cpp:275:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		app.read(argc, argv);
data/relion-3.1.0/src/apps/autopick.cpp:31:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/autopick_mpi.cpp:31:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/convert_star.cpp:39:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/convert_star.cpp:60:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mdt.read(fn_in);
data/relion-3.1.0/src/apps/convert_star.cpp:124:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		app.read(argc, argv);
data/relion-3.1.0/src/apps/convert_to_tiff.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		app.read(argc, argv);
data/relion-3.1.0/src/apps/convert_to_tiff_mpi.cpp:37:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		app.read(argc, argv);
data/relion-3.1.0/src/apps/ctf_nyquist_test.cpp:65:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    mdt.read(starFn);
data/relion-3.1.0/src/apps/ctf_nyquist_test.cpp:100:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        ctf.read(mdt, mdt, p);
data/relion-3.1.0/src/apps/ctf_refine.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/ctf_refine_mpi.cpp:30:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/ctf_toolbox.cpp:53:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/ctf_toolbox.cpp:166:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				img.read(fn_img);
data/relion-3.1.0/src/apps/ctf_toolbox.cpp:225:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/defocus_stats.cpp:20:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	mdt0.read(starFn);
data/relion-3.1.0/src/apps/demodulate.cpp:51:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	particlesMdt.read(particlesFn);
data/relion-3.1.0/src/apps/display.cpp:39:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/double_bfac_fit.cpp:36:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	fcc0.read(fccFn0);
data/relion-3.1.0/src/apps/double_bfac_fit.cpp:37:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	fcc1.read(fccFn1);
data/relion-3.1.0/src/apps/double_reconstruct_openmp.cpp:70:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(int argc, char **argv)
data/relion-3.1.0/src/apps/double_reconstruct_openmp.cpp:303:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				sub.read(fn_sub);
data/relion-3.1.0/src/apps/double_reconstruct_openmp.cpp:713:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/estimate_gain.cpp:23:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv) {
data/relion-3.1.0/src/apps/estimate_gain.cpp:69:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ihead.read(fn_img, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/apps/estimate_gain.cpp:107:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ihead.read(fn_img, false, -1, false, true);
data/relion-3.1.0/src/apps/estimate_gain.cpp:113:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iframe.read(fn_img, true, iframe, false, true); // mmap false, is_2D true
data/relion-3.1.0/src/apps/estimate_gain.cpp:162:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	app.read(argc, argv);
data/relion-3.1.0/src/apps/external_reconstruct.cpp:46:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/external_reconstruct.cpp:62:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDlist.read(fn_star, "external_reconstruct_general");
data/relion-3.1.0/src/apps/external_reconstruct.cpp:75:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDtau.read(fn_star, "external_reconstruct_tau2");
data/relion-3.1.0/src/apps/external_reconstruct.cpp:99:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		ComplexIO::read(Idata, fn_root, fn_ext);
data/relion-3.1.0/src/apps/external_reconstruct.cpp:100:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Iweight.read(fn_weight);
data/relion-3.1.0/src/apps/external_reconstruct.cpp:127:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:54:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:119:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDunt.read(fn_unt);
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:120:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDtil.read(fn_til);
data/relion-3.1.0/src/apps/find_tiltpairs.cpp:479:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/flex_analyse.cpp:30:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/flex_analyse_mpi.cpp:38:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:252:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/helix_toolbox.cpp:503:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:525:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:689:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:726:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:817:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:871:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img1.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:887:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:913:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:1026:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD_2d.read(fn_in1);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:1027:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD_3d.read(fn_in2);
data/relion-3.1.0/src/apps/helix_toolbox.cpp:1093:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/image_handler.cpp:68:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/image_handler.cpp:714:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MD.read(fn_in);
data/relion-3.1.0/src/apps/image_handler.cpp:732:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				tmp.read(fn_in, false); //false means do not read image now, only header
data/relion-3.1.0/src/apps/image_handler.cpp:776:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Ihead.read(fn_img, false);
data/relion-3.1.0/src/apps/image_handler.cpp:786:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_mult);
data/relion-3.1.0/src/apps/image_handler.cpp:788:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_div);
data/relion-3.1.0/src/apps/image_handler.cpp:790:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_add);
data/relion-3.1.0/src/apps/image_handler.cpp:793:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_subtract);
data/relion-3.1.0/src/apps/image_handler.cpp:794:61:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					if (do_optimise_scale_subtract && fn_mask != "") Imask.read(fn_mask);
data/relion-3.1.0/src/apps/image_handler.cpp:797:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_fsc);
data/relion-3.1.0/src/apps/image_handler.cpp:799:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_cosDPhi);
data/relion-3.1.0/src/apps/image_handler.cpp:801:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_adjust_power);
data/relion-3.1.0/src/apps/image_handler.cpp:803:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_fourfilter);
data/relion-3.1.0/src/apps/image_handler.cpp:806:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iop.read(fn_correct_ampl);
data/relion-3.1.0/src/apps/image_handler.cpp:853:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iin.read(fn_img);
data/relion-3.1.0/src/apps/image_handler.cpp:862:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iin.read(fn_img);
data/relion-3.1.0/src/apps/image_handler.cpp:872:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iin.read(fn_img);
data/relion-3.1.0/src/apps/image_handler.cpp:910:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iin.read(fn_img);
data/relion-3.1.0/src/apps/image_handler.cpp:918:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iin.read(fn_img);
data/relion-3.1.0/src/apps/image_handler.cpp:946:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Iin.read(fn_img, true, nn);
data/relion-3.1.0/src/apps/image_handler.cpp:970:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Iin.read(fn_img);
data/relion-3.1.0/src/apps/image_handler.cpp:1056:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/import.cpp:42:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/import.cpp:112:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDopt.read(old_fn_out, "optics");
data/relion-3.1.0/src/apps/import.cpp:113:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDout.read(old_fn_out, tablename);
data/relion-3.1.0/src/apps/import.cpp:311:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/localsym.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/localsym_mpi.cpp:9:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/maingui.cpp:42:6:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
	if (strlen(my_dir) > 45)
data/relion-3.1.0/src/apps/maingui.cpp:46:16:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
		for (int i = strlen(my_dir)-45; i < strlen(my_dir); i++, j++)
data/relion-3.1.0/src/apps/maingui.cpp:46:39:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
		for (int i = strlen(my_dir)-45; i < strlen(my_dir); i++, j++)
data/relion-3.1.0/src/apps/maingui.cpp:55:19:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
		for (i = 0; i < strlen(my_dir); i++)
data/relion-3.1.0/src/apps/manualpick.cpp:39:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/mask_create.cpp:46:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/mask_create.cpp:134:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Iin.read(fn_thr);
data/relion-3.1.0/src/apps/mask_create.cpp:152:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ip.read(fn_and);
data/relion-3.1.0/src/apps/mask_create.cpp:166:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ip.read(fn_or);
data/relion-3.1.0/src/apps/mask_create.cpp:180:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ip.read(fn_andnot);
data/relion-3.1.0/src/apps/mask_create.cpp:194:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ip.read(fn_ornot);
data/relion-3.1.0/src/apps/mask_create.cpp:223:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/motion_refine.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/motion_refine_mpi.cpp:30:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/mrc2vtk.cpp:24:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn);
data/relion-3.1.0/src/apps/particle_FCC.cpp:40:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		reference.read(parser, argc, argv);
data/relion-3.1.0/src/apps/particle_reposition.cpp:44:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/particle_reposition.cpp:73:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		optimiser.read(fn_opt);
data/relion-3.1.0/src/apps/particle_reposition.cpp:82:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDdata.read(fn_dat);
data/relion-3.1.0/src/apps/particle_reposition.cpp:137:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Imic_in.read(fn_mic);
data/relion-3.1.0/src/apps/particle_reposition.cpp:266:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/particle_select.cpp:30:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	sourceAll.read(sourceFn);
data/relion-3.1.0/src/apps/particle_select.cpp:31:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	refAll.read(refFn);
data/relion-3.1.0/src/apps/particle_subtract.cpp:30:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/particle_subtract_mpi.cpp:40:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/particle_symmetry_expand.cpp:50:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/particle_symmetry_expand.cpp:123:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			DFi.read(fn_in);
data/relion-3.1.0/src/apps/particle_symmetry_expand.cpp:131:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				DFi.read(fn_in);
data/relion-3.1.0/src/apps/particle_symmetry_expand.cpp:218:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/pipeliner.cpp:51:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/pipeliner.cpp:83:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		pipeline.read(DO_LOCK);
data/relion-3.1.0/src/apps/pipeliner.cpp:93:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			job.read(add_job_star, is_continue, true); // true = do_initialise
data/relion-3.1.0/src/apps/pipeliner.cpp:163:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/postprocess.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/postprocess_mpi.cpp:36:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:114:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:298:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD_tomo.read(fn_tomo_list);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:340:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn1, false);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:354:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn2, false);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:425:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MD_this_tomo.read(fn3);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:479:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				img.read(fn2, false);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:532:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD_tomo.read(fn_tomo_list);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:807:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD_ctf_results.read(dir_ctf_results + "/micrographs_ctf.star");
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:880:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_tomo, false);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:922:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MD_coords.read(fn_coords);
data/relion-3.1.0/src/apps/prepare_subtomo.cpp:1108:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/preprocess.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/preprocess_mpi.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/project.cpp:57:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/project.cpp:122:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		vol.read(fn_map);
data/relion-3.1.0/src/apps/project.cpp:128:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			msk.read(fn_mask);
data/relion-3.1.0/src/apps/project.cpp:189:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDang_sim.read(fn_ang_simulate);
data/relion-3.1.0/src/apps/project.cpp:287:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					model.read(fn_model);
data/relion-3.1.0/src/apps/project.cpp:339:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
						Ictf.read(fn_ctf);
data/relion-3.1.0/src/apps/project.cpp:457:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					expimg.read(fn_expimg);
data/relion-3.1.0/src/apps/project.cpp:529:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
							Ictf.read(fn_ctf);
data/relion-3.1.0/src/apps/project.cpp:555:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
							ctf.read(MDang, MDang, imgno);
data/relion-3.1.0/src/apps/project.cpp:636:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/reconstruct.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/reconstruct_mpi.cpp:31:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/refine.cpp:33:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		optimiser.read(argc, argv);
data/relion-3.1.0/src/apps/refine_mpi.cpp:30:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		optimiser.read(argc, argv);
data/relion-3.1.0/src/apps/reposition.cpp:29:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	reference.read(parser, argc, argv);
data/relion-3.1.0/src/apps/run_ctffind.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/run_ctffind_mpi.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/run_motioncorr.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/run_motioncorr_mpi.cpp:29:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/scheduler.cpp:68:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/scheduler.cpp:131:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				pipeline.read(DO_LOCK, lock_message);
data/relion-3.1.0/src/apps/scheduler.cpp:139:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read(DO_LOCK); // lock for the entire duration of the run!!
data/relion-3.1.0/src/apps/scheduler.cpp:155:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read();
data/relion-3.1.0/src/apps/scheduler.cpp:163:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read(DO_LOCK);
data/relion-3.1.0/src/apps/scheduler.cpp:190:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				myjob.read(input, dummy, true);
data/relion-3.1.0/src/apps/scheduler.cpp:275:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/split_stack.cpp:24:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img0.read(inPath+inName+".st:mrcs", true);
data/relion-3.1.0/src/apps/stack_create.cpp:47:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/stack_create.cpp:76:28:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		if (do_ignore_optics) MD.read(fn_star);
data/relion-3.1.0/src/apps/stack_create.cpp:100:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				in.read(fn_img);
data/relion-3.1.0/src/apps/stack_create.cpp:193:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					in.read(fn_img);
data/relion-3.1.0/src/apps/stack_create.cpp:273:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/star_handler.cpp:52:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/star_handler.cpp:176:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD.read(fn, tablename);
data/relion-3.1.0/src/apps/star_handler.cpp:184:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MD.read(fn, tablename);
data/relion-3.1.0/src/apps/star_handler.cpp:280:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_img);
data/relion-3.1.0/src/apps/star_handler.cpp:349:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (do_ignore_optics) MDin.read(fns_in[i], tablename_in);
data/relion-3.1.0/src/apps/star_handler.cpp:1054:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/tiltpair_plot.cpp:52:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv)
data/relion-3.1.0/src/apps/tiltpair_plot.cpp:77:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDu.read(fn_unt);
data/relion-3.1.0/src/apps/tiltpair_plot.cpp:78:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDt.read(fn_til);
data/relion-3.1.0/src/apps/tiltpair_plot.cpp:308:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		prm.read(argc, argv);
data/relion-3.1.0/src/apps/tomo_test.cpp:132:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	partMdt.read(particlesStar);
data/relion-3.1.0/src/assembly.cpp:247:7:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
			if(strlen(line) < 20)
data/relion-3.1.0/src/autopicker.cpp:91:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void AutoPicker::read(int argc, char **argv)
data/relion-3.1.0/src/autopicker.cpp:375:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDref.read(fn_ref);
data/relion-3.1.0/src/autopicker.cpp:390:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Iref.read(fn_img);
data/relion-3.1.0/src/autopicker.cpp:419:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Istk.read(fn_ref);
data/relion-3.1.0/src/autopicker.cpp:652:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Imic.read(fn_micrographs[0], false);
data/relion-3.1.0/src/autopicker.cpp:959:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD.read(fn_pick);
data/relion-3.1.0/src/autopicker.cpp:2545:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Imic.read(fn_mic);
data/relion-3.1.0/src/autopicker.cpp:2671:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Maux.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:2859:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Imic.read(fn_mic);
data/relion-3.1.0/src/autopicker.cpp:2961:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		It.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:2967:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		It.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:3068:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			It_float.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:3074:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				It_float.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:3080:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				It_int.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:3112:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				It.read(fn_tmp);
data/relion-3.1.0/src/autopicker.cpp:3117:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				It.read(fn_tmp);
data/relion-3.1.0/src/autopicker.h:284:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/autopicker_mpi.cpp:23:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void AutoPickerMpi::read(int argc, char **argv)
data/relion-3.1.0/src/autopicker_mpi.cpp:32:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	AutoPicker::read(argc, argv);
data/relion-3.1.0/src/autopicker_mpi.h:30:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/backprojector.cpp:1287:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Iweight.read(fn_recons);
data/relion-3.1.0/src/backprojector.cpp:1294:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDnewtau.read(fn_out_star);
data/relion-3.1.0/src/ctf.cpp:93:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void CTF::read(const MetaDataTable &MD1, const MetaDataTable &MD2, long int objectID)
data/relion-3.1.0/src/ctf.cpp:174:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void CTF::read(const MetaDataTable &MD)
data/relion-3.1.0/src/ctf.cpp:178:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(MD, MDempty);
data/relion-3.1.0/src/ctf.h:153:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(const MetaDataTable &MD1, const MetaDataTable &MD2, long int objectID = -1);
data/relion-3.1.0/src/ctf.h:166:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(const MetaDataTable &MD);
data/relion-3.1.0/src/ctffind_runner.cpp:27:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void CtffindRunner::read(int argc, char **argv, int rank)
data/relion-3.1.0/src/ctffind_runner.cpp:338:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Itmp.read(fn_micrographs[0], false); // false means only read header!
data/relion-3.1.0/src/ctffind_runner.cpp:534:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Itmp.read(outputfile, false); // false means only read header!
data/relion-3.1.0/src/ctffind_runner.cpp:626:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I.read(fn_mic);
data/relion-3.1.0/src/ctffind_runner.cpp:707:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I.read(fn_mic);
data/relion-3.1.0/src/ctffind_runner.cpp:727:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Ihead.read(fn_mic_win, false);
data/relion-3.1.0/src/ctffind_runner.h:158:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv, int rank = 0);
data/relion-3.1.0/src/ctffind_runner_mpi.cpp:22:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void CtffindRunnerMpi::read(int argc, char **argv)
data/relion-3.1.0/src/ctffind_runner_mpi.cpp:28:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	CtffindRunner::read(argc, argv);
data/relion-3.1.0/src/ctffind_runner_mpi.h:43:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(int argc, char **argv);
data/relion-3.1.0/src/displayer.cpp:314:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_img, false);
data/relion-3.1.0/src/displayer.cpp:501:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				stack.read(fn_my_stack);
data/relion-3.1.0/src/displayer.cpp:921:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MDbackup.read(fn_sel);
data/relion-3.1.0/src/displayer.cpp:1152:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_img, false);
data/relion-3.1.0/src/displayer.cpp:1175:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_img, false);
data/relion-3.1.0/src/displayer.cpp:1205:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_img);
data/relion-3.1.0/src/displayer.cpp:1542:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				img.read(fn_img);
data/relion-3.1.0/src/displayer.cpp:2040:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MDcoords.read(fn_coord_in);
data/relion-3.1.0/src/displayer.cpp:2051:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MDcolor.read(fn_color);
data/relion-3.1.0/src/displayer.cpp:2506:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Displayer::read(int argc, char **argv)
data/relion-3.1.0/src/displayer.cpp:2598:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		if (do_ignore_optics) MDdata.read(fn_data);
data/relion-3.1.0/src/displayer.cpp:2603:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDgroups.read(fn_in, "model_groups");
data/relion-3.1.0/src/displayer.cpp:2614:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDgroups.read(fn_model, "model_groups");
data/relion-3.1.0/src/displayer.cpp:2622:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDgroups.read(fn_model, "model_groups");
data/relion-3.1.0/src/displayer.cpp:2671:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_in, false); // dont read data yet: only header to get size
data/relion-3.1.0/src/displayer.cpp:2732:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD.read(fn_in, "model_classes");
data/relion-3.1.0/src/displayer.cpp:2736:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (do_ignore_optics) MD.read(fn_in);
data/relion-3.1.0/src/displayer.cpp:2739:54:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (obsModel.opticsMdt.numberOfObjects() == 0) MD.read(fn_in);
data/relion-3.1.0/src/displayer.cpp:2771:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_in, false);
data/relion-3.1.0/src/displayer.cpp:2798:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_in); // dont read data yet: only header to get size
data/relion-3.1.0/src/displayer.cpp:2814:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDin.read(fn_in, "model_classes");
data/relion-3.1.0/src/displayer.cpp:2816:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD2.read(fn_in, "model_general");
data/relion-3.1.0/src/displayer.cpp:2822:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (do_ignore_optics) MDin.read(fn_in);
data/relion-3.1.0/src/displayer.cpp:2825:56:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (obsModel.opticsMdt.numberOfObjects() == 0) MDin.read(fn_in);
data/relion-3.1.0/src/displayer.cpp:2860:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_in, false); // dont read data yet: only header to get size
data/relion-3.1.0/src/displayer.cpp:2889:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				It.read(fn_in);
data/relion-3.1.0/src/displayer.cpp:2909:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_in); // now read image data as well (not only header)
data/relion-3.1.0/src/displayer.h:638:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/exp_model.cpp:504:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Itmp.read(fn_tmp, false);
data/relion-3.1.0/src/exp_model.cpp:639:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			tmp.read(fn_img, false); // false means: only read the header!
data/relion-3.1.0/src/exp_model.cpp:680:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				img.read(fn_img);
data/relion-3.1.0/src/exp_model.cpp:687:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					img.read(fn_ctf);
data/relion-3.1.0/src/exp_model.cpp:749:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Experiment::read(FileName fn_exp, bool do_ignore_particle_name, bool do_ignore_group_name, bool do_preread_images,
data/relion-3.1.0/src/exp_model.cpp:792:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_exp, false); // false means skip data, only read header
data/relion-3.1.0/src/exp_model.cpp:1064:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (MDimgin.read(fn_exp, tablename) > 0)
data/relion-3.1.0/src/exp_model.h:392:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(
data/relion-3.1.0/src/flex_analyser.cpp:23:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void FlexAnalyser::read(int argc, char **argv)
data/relion-3.1.0/src/flex_analyser.cpp:67:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		data.read(fn_data);
data/relion-3.1.0/src/flex_analyser.cpp:75:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		model.read(fn_model);
data/relion-3.1.0/src/flex_analyser.h:101:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/gpu_utils/cuda_mem_utils.h:671:7:  [1] (obsolete) usleep:
  This C routine is considered obsolete (as opposed to the shell command by
  the same name). The interaction of this function with SIGALRM and other
  timer functions such as sleep(), alarm(), setitimer(), and nanosleep() is
  unspecified (CWE-676). Use nanosleep(2) or setitimer(2) instead.
						usleep(10000); // 10 ms, Order of magnitude of largest kernels
data/relion-3.1.0/src/gui_jobwindow.cpp:419:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	myjob.read("", is_continue);
data/relion-3.1.0/src/gui_mainwindow.cpp:318:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read(DONT_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:338:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		pipeline.read(DO_LOCK, lock_message);
data/relion-3.1.0/src/gui_mainwindow.cpp:993:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read(DONT_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:1519:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	gui_jobwindows[iwin]->myjob.read(pipeline.processList[current_job].name, is_main_continue);
data/relion-3.1.0/src/gui_mainwindow.cpp:1754:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			manualpickjob.read(fn_job.c_str(), iscont, true); // true means do initialise
data/relion-3.1.0/src/gui_mainwindow.cpp:1894:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:1901:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:1931:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:1996:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2026:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2071:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2112:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2204:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2343:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2578:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2623:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:2646:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		schedule.read(DO_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:3014:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	gui_jobwindows[iwin]->myjob.read("", is_main_continue);
data/relion-3.1.0/src/gui_mainwindow.cpp:3191:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	pipeline.read(DO_LOCK, lock_message);
data/relion-3.1.0/src/gui_mainwindow.cpp:3331:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			schedule.read(DONT_LOCK);
data/relion-3.1.0/src/gui_mainwindow.cpp:3346:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		pipeline.read(DO_LOCK, lock_message);
data/relion-3.1.0/src/healpix_sampling.cpp:175:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void HealpixSampling::read(FileName fn_in)
data/relion-3.1.0/src/healpix_sampling.h:186:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(FileName fn_in);
data/relion-3.1.0/src/helix.cpp:1841:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:2024:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_priors.read(fn_priors);
data/relion-3.1.0/src/helix.cpp:2025:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_local_ctf.read(fn_local_ctf);
data/relion-3.1.0/src/helix.cpp:2174:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(fn_in);
data/relion-3.1.0/src/helix.cpp:2202:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:2240:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:2330:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:3423:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:3489:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD_in.read(fns_list[file_id]);
data/relion-3.1.0/src/helix.cpp:3598:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_vol_in, false); // Read the header only!
data/relion-3.1.0/src/helix.cpp:3896:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:4621:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD_in.read(fn_in);
data/relion-3.1.0/src/helix.cpp:4761:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(fn_in);
data/relion-3.1.0/src/helix.cpp:4802:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img0.read(img_name);
data/relion-3.1.0/src/helix.cpp:4856:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img0.read(img_name);
data/relion-3.1.0/src/helix.cpp:5101:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_tomo, false);
data/relion-3.1.0/src/helix.cpp:5198:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_qword), sizeof(buf_qword)); // Read the first 16 bytes
data/relion-3.1.0/src/helix.cpp:5199:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_qword), sizeof(buf_qword)); // Read the second 16 bytes
data/relion-3.1.0/src/helix.cpp:5203:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				fin.read(reinterpret_cast<char*>(buf_qword), sizeof(buf_qword)); // Read the next 96 bytes
data/relion-3.1.0/src/helix.cpp:5204:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5205:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Read the next 8 bytes
data/relion-3.1.0/src/helix.cpp:5207:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Xdim
data/relion-3.1.0/src/helix.cpp:5214:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Ydim
data/relion-3.1.0/src/helix.cpp:5221:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Zdim
data/relion-3.1.0/src/helix.cpp:5232:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Number of objects
data/relion-3.1.0/src/helix.cpp:5233:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Flags
data/relion-3.1.0/src/helix.cpp:5248:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			while (fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word))) // Read 4-byte blocks
data/relion-3.1.0/src/helix.cpp:5259:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word)); // Number of 3D points (meshes)
data/relion-3.1.0/src/helix.cpp:5267:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5271:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5272:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5276:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5285:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5297:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				fin.read(reinterpret_cast<char*>(buf_word), sizeof(buf_word));
data/relion-3.1.0/src/helix.cpp:5324:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD.read(fn_in);
data/relion-3.1.0/src/helix.cpp:5524:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	while (fin.read(reinterpret_cast<char*>(data), sizeof(data)))
data/relion-3.1.0/src/helix.cpp:5702:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_img);
data/relion-3.1.0/src/helix_inimodel2d.cpp:135:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD.read(fn_imgs);
data/relion-3.1.0/src/helix_inimodel2d.cpp:145:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_img, false); // only read the header
data/relion-3.1.0/src/helix_inimodel2d.cpp:167:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDmics.read(fn_mics);
data/relion-3.1.0/src/helix_inimodel2d.cpp:203:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_inimodel);
data/relion-3.1.0/src/helix_inimodel2d.cpp:305:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(fn_imgs);
data/relion-3.1.0/src/helix_inimodel2d.cpp:328:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_img);
data/relion-3.1.0/src/helix_inimodel2d.cpp:429:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Imic.read(fn_mic);
data/relion-3.1.0/src/helix_inimodel2d.cpp:434:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDcoords.read(fn_coord);
data/relion-3.1.0/src/helix_inimodel2d.cpp:681:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Iref.read(fn_inimodel);
data/relion-3.1.0/src/image.h:484:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		return !read(name, false);
data/relion-3.1.0/src/image.h:502:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	int read(const FileName &name, bool readdata=true, long int select_img=-1, bool mapData = false, bool is_2D = false)
data/relion-3.1.0/src/image.h:1309:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		aux.read(fn);
data/relion-3.1.0/src/image.h:1485:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			auxI.read(filNamePlusExt,false);
data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp:138:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            map0.read(reconFn0);
data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp:148:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            map1.read(reconFn1);
data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp:190:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            mask.read(maskFn);
data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp:198:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        mask.read(maskFn);
data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp:232:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    mdt0.read(starFn);
data/relion-3.1.0/src/jaz/archive/apps/em_motion.cpp:285:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    stack0.read(finName, false);
data/relion-3.1.0/src/jaz/archive/apps/ref_aberration_plot.cpp:131:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				ctf0.read(mdts[g], mdts[g], p);
data/relion-3.1.0/src/jaz/archive/apps/ref_aberration_plot.cpp:187:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			cosPhi.read(precomp+"_cos.mrc");
data/relion-3.1.0/src/jaz/archive/apps/ref_aberration_plot.cpp:188:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			sinPhi.read(precomp+"_sin.mrc");
data/relion-3.1.0/src/jaz/archive/apps/ref_aberration_plot.cpp:189:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			phase.read(precomp+"_phase.mrc");
data/relion-3.1.0/src/jaz/archive/apps/ref_aberration_plot.cpp:226:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					ctf0.read(mdts[g], mdts[g], p);
data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp:108:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        fscMdt.read(fscFn, "fsc");
data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp:132:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        map0.read(reconFn0);
data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp:141:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        map1.read(reconFn1);
data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp:173:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            mask.read(maskFn);
data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp:181:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        mask.read(maskFn);
data/relion-3.1.0/src/jaz/archive/apps/update_angles.cpp:214:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    mdt0.read(starFn);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:190:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            maps[0].read(reconFn0);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:202:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                maps[1].read(reconFn1);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:240:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                mask.read(maskFn);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:248:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            mask.read(maskFn);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:282:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        fscMdt.read(fscFn, "fsc");
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:305:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        mdt0.read(starFn);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:399:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        corrMic.read(corrMicFn);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:456:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stack0.read(finName, false);
data/relion-3.1.0/src/jaz/archive/refinement_program.cpp:562:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                    lastGainRef.read(gainFn);
data/relion-3.1.0/src/jaz/complex_io.h:53:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	static void read(Image<tComplex<T> >& img, std::string fnBase, std::string fnSuffix)
data/relion-3.1.0/src/jaz/complex_io.h:57:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		temp.read(fnBase + "_real" + fnSuffix);
data/relion-3.1.0/src/jaz/complex_io.h:66:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		temp.read(fnBase + "_imag" + fnSuffix);
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp:30:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void AberrationEstimator::read(IOParser &parser, int argc, char *argv[])
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp:210:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Axx.read(outRoot+"_aberr-Axx_optics-group_" + ogstr + ".mrc");
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp:211:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Axy.read(outRoot+"_aberr-Axy_optics-group_" + ogstr + ".mrc");
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp:212:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Ayy.read(outRoot+"_aberr-Ayy_optics-group_" + ogstr + ".mrc");
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp:214:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				bx.read(outRoot+"_aberr-bx_optics-group_" + ogstr + ".mrc");
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.cpp:215:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				by.read(outRoot+"_aberr-by_optics-group_" + ogstr + ".mrc");
data/relion-3.1.0/src/jaz/ctf/aberration_estimator.h:17:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/ctf/bfactor_refiner.cpp:25:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void BFactorRefiner::read(IOParser &parser, int argc, char *argv[])
data/relion-3.1.0/src/jaz/ctf/bfactor_refiner.h:18:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:48:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void CtfRefiner::read(int argc, char **argv)
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:56:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	reference.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:69:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	defocusEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:75:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	bfactorEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:81:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	tiltEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:87:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	aberrationEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:93:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	magnificationEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:455:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mdt.read(outRoot+"_bfactor_fit.star");
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.cpp:460:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mdt.read(outRoot+"_defocus_fit.star");
data/relion-3.1.0/src/jaz/ctf/ctf_refiner.h:41:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(int argc, char **argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner_mpi.cpp:23:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void CtfRefinerMpi::read(int argc, char **argv)
data/relion-3.1.0/src/jaz/ctf/ctf_refiner_mpi.cpp:29:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    CtfRefiner::read(argc, argv);
data/relion-3.1.0/src/jaz/ctf/ctf_refiner_mpi.h:43:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(int argc, char **argv);
data/relion-3.1.0/src/jaz/ctf/defocus_estimator.cpp:43:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void DefocusEstimator::read(IOParser &parser, int argc, char *argv[])
data/relion-3.1.0/src/jaz/ctf/defocus_estimator.h:37:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/ctf/magnification_estimator.cpp:42:30:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MagnificationEstimator::read(
data/relion-3.1.0/src/jaz/ctf/magnification_estimator.h:43:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/ctf/magnification_helper.cpp:315:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Axx.read(path+"_Axx.mrc");
data/relion-3.1.0/src/jaz/ctf/magnification_helper.cpp:316:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Axy.read(path+"_Axy.mrc");
data/relion-3.1.0/src/jaz/ctf/magnification_helper.cpp:317:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Ayy.read(path+"_Ayy.mrc");
data/relion-3.1.0/src/jaz/ctf/magnification_helper.cpp:318:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	bx.read(path+"_bx.mrc");
data/relion-3.1.0/src/jaz/ctf/magnification_helper.cpp:319:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	by.read(path+"_by.mrc");
data/relion-3.1.0/src/jaz/ctf/tilt_estimator.cpp:50:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void TiltEstimator::read(IOParser &parser, int argc, char *argv[])
data/relion-3.1.0/src/jaz/ctf/tilt_estimator.cpp:211:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				wAcc.read(outRoot+"_wAcc_optics-group_"+ogstr+".mrc");
data/relion-3.1.0/src/jaz/ctf/tilt_estimator.cpp:212:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				ComplexIO::read(xyAcc, outRoot+"_xyAcc_optics-group_"+ogstr, ".mrc");
data/relion-3.1.0/src/jaz/ctf/tilt_estimator.h:37:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/gravis/io/array.h:78:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          if (  ifIn.read( &vCheck[0], vCheck.size() ) )
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:196:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          is.read((char*)(&h), sizeof(h));
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:221:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          is.read((char*)(&h), sizeof(h));
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:231:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          is.read((char*)(&out[0]), sizeof(out[0]) * h.length);
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:245:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          is.read((char*)(&h), sizeof(h));
data/relion-3.1.0/src/jaz/gravis/io/array/a.h:255:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          is.read((char*)(&out[0]), sizeof(out[0]) * h.length);
data/relion-3.1.0/src/jaz/gravis/io/array/matlab.h:163:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        static void read(tArray<T> &out, const std::string& filename, const std::string& varname = "gravis_array")
data/relion-3.1.0/src/jaz/gravis/io/array/raw.h:51:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          is.read((char*)(&out[0]), sizeof(T) * length);
data/relion-3.1.0/src/jaz/gravis/io/image/f.h:145:11:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
          strncpy(fih.name, image.name().c_str(), 128);
data/relion-3.1.0/src/jaz/gravis/io/mesh/OBJReader.h:68:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      void read (std::string);
data/relion-3.1.0/src/jaz/gravis/io/mesh/OBJReader.h:77:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        objr.read(fn);
data/relion-3.1.0/src/jaz/gravis/tImage.h:115:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      void read (const std::string&);
data/relion-3.1.0/src/jaz/gravis/tImage.h:684:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void tImage<T>::read (const std::string& filename)
data/relion-3.1.0/src/jaz/gravis/tImage.h:703:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    is.read(&header[0], sizeof(header));
data/relion-3.1.0/src/jaz/gravis/tImage.h:709:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      reader.read(*this, filename.c_str());
data/relion-3.1.0/src/jaz/gravis/tImage.h:716:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      reader.read(*this,  filename.c_str());
data/relion-3.1.0/src/jaz/gravis/tMM.h:74:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(mmid1, 32);
data/relion-3.1.0/src/jaz/gravis/tMM.h:75:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&endianness, 2);
data/relion-3.1.0/src/jaz/gravis/tMM.h:76:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&uint32_size, 1);
data/relion-3.1.0/src/jaz/gravis/tMM.h:77:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&T_size, 1);
data/relion-3.1.0/src/jaz/gravis/tMM.h:78:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&m, sizeof(m));
data/relion-3.1.0/src/jaz/gravis/tMM.h:79:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&k, sizeof(k));
data/relion-3.1.0/src/jaz/gravis/tMM.h:99:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(mmid1, 32);
data/relion-3.1.0/src/jaz/gravis/tMM.h:100:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&endianness, 2);
data/relion-3.1.0/src/jaz/gravis/tMM.h:101:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&uint32_size, 1);
data/relion-3.1.0/src/jaz/gravis/tMM.h:102:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&T_size, 1);
data/relion-3.1.0/src/jaz/gravis/tMM.h:103:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&m, sizeof(m));
data/relion-3.1.0/src/jaz/gravis/tMM.h:104:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)&k, sizeof(k));
data/relion-3.1.0/src/jaz/gravis/tMM.h:115:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)D.data, sizeof(Vector)*D.size());
data/relion-3.1.0/src/jaz/gravis/tMM.h:116:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read((char*)nu.data, sizeof(Vector)*nu.size());
data/relion-3.1.0/src/jaz/gravis/tMM.h:118:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        stream.read(mmid2, 32);
data/relion-3.1.0/src/jaz/gravis/tMesh.h:73:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
              image.read( getFilenameNative() );
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1302:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read(mmid1, 32);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1303:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&endianness, 2);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1304:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&uint32_size, 1);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1305:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&T_size, 1);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1306:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&h, sizeof(h));
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1307:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&w, sizeof(w));
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1313:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)M.data, sizeof(T)*M.size());
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1346:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read(mmid1, 32);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1347:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&endianness, 2);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1348:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&uint32_size, 1);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1349:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&T_size, 1);
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1350:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)&k, sizeof(k));
data/relion-3.1.0/src/jaz/gravis/tVarMatrix.h:1356:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      stream.read((char*)v.data, sizeof(T)*v.size());
data/relion-3.1.0/src/jaz/io/star_converter.cpp:196:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					img.read(fn_img, false); // false means read only header, skip real data
data/relion-3.1.0/src/jaz/legacy_obs_model.cpp:61:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        ctf.read(mdt, mdt, particle);
data/relion-3.1.0/src/jaz/legacy_obs_model.cpp:149:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        ctf.read(mdt, mdt, particle);
data/relion-3.1.0/src/jaz/micrograph_handler.cpp:338:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		dum.read(fn_post, false);
data/relion-3.1.0/src/jaz/micrograph_handler.cpp:440:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				lastGainRef.read(gainFn);
data/relion-3.1.0/src/jaz/micrograph_handler.cpp:592:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		dum.read(fn_post, false);
data/relion-3.1.0/src/jaz/motion/frame_recombiner.cpp:39:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void FrameRecombiner::read(IOParser& parser, int argc, char* argv[])
data/relion-3.1.0/src/jaz/motion/frame_recombiner.cpp:454:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		fccDataMg.read(fn_root + "_FCC_cc.mrc");
data/relion-3.1.0/src/jaz/motion/frame_recombiner.cpp:455:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		fccWgh0Mg.read(fn_root + "_FCC_w0.mrc");
data/relion-3.1.0/src/jaz/motion/frame_recombiner.cpp:456:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		fccWgh1Mg.read(fn_root + "_FCC_w1.mrc");
data/relion-3.1.0/src/jaz/motion/frame_recombiner.cpp:622:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	mdt.read(bfacFn);
data/relion-3.1.0/src/jaz/motion/frame_recombiner.h:39:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/motion/motion_estimator.cpp:44:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MotionEstimator::read(IOParser& parser, int argc, char *argv[])
data/relion-3.1.0/src/jaz/motion/motion_estimator.h:41:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/motion/motion_param_estimator.cpp:43:28:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MotionParamEstimator::read(IOParser& parser, int argc, char *argv[])
data/relion-3.1.0/src/jaz/motion/motion_param_estimator.h:54:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:49:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MotionRefiner::read(int argc, char **argv)
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:60:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	reference.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:67:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	motionEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:68:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	motionParamEstimator.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:69:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	frameRecombiner.read(parser, argc, argv);
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:111:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	mdt0.read(starFn);	
data/relion-3.1.0/src/jaz/motion/motion_refiner.cpp:408:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mdt.read(fn_root+"_shiny" + frameRecombiner.getOutputSuffix() + ".star");
data/relion-3.1.0/src/jaz/motion/motion_refiner.h:51:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(int argc, char **argv);
data/relion-3.1.0/src/jaz/motion/motion_refiner_mpi.cpp:23:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MotionRefinerMpi::read(int argc, char **argv)
data/relion-3.1.0/src/jaz/motion/motion_refiner_mpi.cpp:29:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MotionRefiner::read(argc, argv);
data/relion-3.1.0/src/jaz/motion/motion_refiner_mpi.h:44:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(int argc, char **argv);
data/relion-3.1.0/src/jaz/obs_model.cpp:47:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		if (particlesMdt.read(filename, "particles"))
data/relion-3.1.0/src/jaz/obs_model.cpp:51:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		else if (particlesMdt.read(filename, "micrographs"))
data/relion-3.1.0/src/jaz/obs_model.cpp:55:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		else if (particlesMdt.read(filename, "movies"))
data/relion-3.1.0/src/jaz/obs_model.cpp:62:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		particlesMdt.read(filename, tablename);
data/relion-3.1.0/src/jaz/obs_model.cpp:65:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	opticsMdt.read(filename, "optics");
data/relion-3.1.0/src/jaz/obs_model.cpp:76:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		oldMdt.read(filename);
data/relion-3.1.0/src/jaz/obs_model.cpp:1016:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDmtf.read(fnMtfs[optGroup]);
data/relion-3.1.0/src/jaz/reference_map.cpp:45:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void ReferenceMap::read(IOParser& parser, int argc, char* argv[])
data/relion-3.1.0/src/jaz/reference_map.cpp:62:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD.read(fscFn, "general");
data/relion-3.1.0/src/jaz/reference_map.cpp:90:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	maps[0].read(reconFn0);
data/relion-3.1.0/src/jaz/reference_map.cpp:100:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	maps[1].read(reconFn1);
data/relion-3.1.0/src/jaz/reference_map.cpp:129:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mask.read(maskFn);
data/relion-3.1.0/src/jaz/reference_map.cpp:151:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		fscMdt.read(fscFn, "fsc");
data/relion-3.1.0/src/jaz/reference_map.h:53:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		void read(IOParser& parser, int argc, char *argv[]);
data/relion-3.1.0/src/jaz/stack_helper.cpp:158:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		out[i].read(sliceName, true, -1, false, true);
data/relion-3.1.0/src/jaz/stack_helper.cpp:187:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	dummy.read(name, false);
data/relion-3.1.0/src/jaz/stack_helper.cpp:202:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		in.read(sliceName, true, -1, false, true);
data/relion-3.1.0/src/jaz/stack_helper.cpp:265:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	in.read(finName);
data/relion-3.1.0/src/jaz/stack_helper.cpp:303:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	mgStack.read(movieFn, false);
data/relion-3.1.0/src/jaz/stack_helper.cpp:388:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		muGraph.read(movieFn, true, f+firstFrame, false, true);
data/relion-3.1.0/src/jaz/tomo/projection_helper.cpp:157:13:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
        if (strlen(text) < 11) break;
data/relion-3.1.0/src/jaz/tomo/tomo_stack.cpp:58:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            images[i].read(fnn);
data/relion-3.1.0/src/local_symmetry.cpp:383:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(fn_info);
data/relion-3.1.0/src/local_symmetry.cpp:529:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(fn_info);
data/relion-3.1.0/src/local_symmetry.cpp:1090:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mask.read(fn_masks[0], false);
data/relion-3.1.0/src/local_symmetry.cpp:1108:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mask.read(fn_masks[imask]);
data/relion-3.1.0/src/local_symmetry.cpp:1217:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mask.read(fn_masks[imask]);
data/relion-3.1.0/src/local_symmetry.cpp:1808:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(fn_in);
data/relion-3.1.0/src/local_symmetry.cpp:2154:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void local_symmetry_parameters::read(int argc, char **argv)
data/relion-3.1.0/src/local_symmetry.cpp:2264:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		unsym_map.read(fn_unsym);
data/relion-3.1.0/src/local_symmetry.cpp:2313:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			map_in.read(fn_unsym);
data/relion-3.1.0/src/local_symmetry.cpp:2430:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		map.read(fn_unsym);
data/relion-3.1.0/src/local_symmetry.cpp:2442:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mask.read(fn_mask_list[imask]);
data/relion-3.1.0/src/local_symmetry.cpp:2532:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					mask2.read(op_mask_list[imask][iop]);
data/relion-3.1.0/src/local_symmetry.cpp:2702:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_unsym);
data/relion-3.1.0/src/local_symmetry.h:292:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/local_symmetry_mpi.cpp:4:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void local_symmetry_parameters_mpi::read(int argc, char **argv)
data/relion-3.1.0/src/local_symmetry_mpi.cpp:10:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    local_symmetry_parameters::read(argc, argv);
data/relion-3.1.0/src/local_symmetry_mpi.cpp:132:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		map.read(fn_unsym);
data/relion-3.1.0/src/local_symmetry_mpi.cpp:156:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mask.read(fn_mask_list[imask]);
data/relion-3.1.0/src/local_symmetry_mpi.cpp:304:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					mask2.read(op_mask_list[imask][iop]);
data/relion-3.1.0/src/local_symmetry_mpi.h:27:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(int argc, char **argv);
data/relion-3.1.0/src/manualpicker.cpp:82:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDcoord.read(fn_coord);
data/relion-3.1.0/src/manualpicker.cpp:498:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDcoord.read(fn_coord);
data/relion-3.1.0/src/manualpicker.cpp:526:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void ManualPicker::read(int argc, char **argv)
data/relion-3.1.0/src/manualpicker.h:134:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/matrix2d.h:659:10:  [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.
    bool equal(const Matrix2D<T>& op,
data/relion-3.1.0/src/metadata_table.cpp:1101:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
long int MetaDataTable::read(const FileName &filename, const std::string &name, std::vector<EMDLabel> *desiredLabels, std::string grep_pattern, bool do_only_count)
data/relion-3.1.0/src/metadata_table.h:273:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	long int read(const FileName &filename, const std::string &name = "", std::vector<EMDLabel> *labelsVector = NULL, std::string grep_pattern = "", bool do_only_count = false);
data/relion-3.1.0/src/micrograph_model.cpp:81:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void ThirdOrderPolynomialModel::read(std::ifstream &fh, std::string block_name) {
data/relion-3.1.0/src/micrograph_model.cpp:139:3:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		read(filename);
data/relion-3.1.0/src/micrograph_model.cpp:370:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Micrograph::read(FileName fn_in, bool read_hotpixels)
data/relion-3.1.0/src/micrograph_model.cpp:442:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		model->read(in, "local_motion_model");
data/relion-3.1.0/src/micrograph_model.cpp:483:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Ihead.read(fnMovie, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/micrograph_model.h:42:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	virtual void read(std::ifstream &fh, std::string block_name) = 0;
data/relion-3.1.0/src/micrograph_model.h:65:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(std::ifstream &fh, std::string block_name);
data/relion-3.1.0/src/micrograph_model.h:147:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(FileName filename, bool read_hotpixels=true);
data/relion-3.1.0/src/ml_model.cpp:96:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MlModel::read(FileName fn_in)
data/relion-3.1.0/src/ml_model.cpp:242:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_tmp);
data/relion-3.1.0/src/ml_model.cpp:252:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_tmp);
data/relion-3.1.0/src/ml_model.cpp:680:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MDtau.read(fn_tau);
data/relion-3.1.0/src/ml_model.cpp:727:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MDref.read(fn_ref,"model_classes");
data/relion-3.1.0/src/ml_model.cpp:729:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDref.read(fn_ref);
data/relion-3.1.0/src/ml_model.cpp:741:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				img.read(fn_tmp);
data/relion-3.1.0/src/ml_model.cpp:779:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			img.read(fn_ref);
data/relion-3.1.0/src/ml_model.cpp:932:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(fn_masks);
data/relion-3.1.0/src/ml_model.cpp:954:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Imask.read(fn_mask);
data/relion-3.1.0/src/ml_model.cpp:1115:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					img.read(fn_ref);
data/relion-3.1.0/src/ml_model.h:388:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(FileName fn_in);
data/relion-3.1.0/src/ml_optimiser.cpp:96:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MlOptimiser::read(int argc, char **argv, int rank)
data/relion-3.1.0/src/ml_optimiser.cpp:112:4:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			read(fn_in, rank);
data/relion-3.1.0/src/ml_optimiser.cpp:491:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mymodel.read(fn_model);
data/relion-3.1.0/src/ml_optimiser.cpp:497:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		sampling.read(fn_sampling);
data/relion-3.1.0/src/ml_optimiser.cpp:810:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MlOptimiser::read(FileName fn_in, int rank, bool do_prevent_preread)
data/relion-3.1.0/src/ml_optimiser.cpp:987:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	mydata.read(fn_data, false, false, do_preread, is_helical_segment);
data/relion-3.1.0/src/ml_optimiser.cpp:996:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mymodel.read(fn_model);
data/relion-3.1.0/src/ml_optimiser.cpp:1000:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mymodel.read(fn_model2);
data/relion-3.1.0/src/ml_optimiser.cpp:1004:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mymodel.read(fn_model);
data/relion-3.1.0/src/ml_optimiser.cpp:1008:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			mymodel.read(fn_model2);
data/relion-3.1.0/src/ml_optimiser.cpp:1013:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mymodel.read(fn_model);
data/relion-3.1.0/src/ml_optimiser.cpp:1027:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	sampling.read(fn_sampling);
data/relion-3.1.0/src/ml_optimiser.cpp:1326:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDsigma.read(fn_sigma);
data/relion-3.1.0/src/ml_optimiser.cpp:1405:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Isolvent.read(_fn_mask);
data/relion-3.1.0/src/ml_optimiser.cpp:1635:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		mydata.read(fn_data, true, false, do_preread, is_helical_segment, myverb); // true means ignore original particle name
data/relion-3.1.0/src/ml_optimiser.cpp:1730:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Itmp.read(fn_fourier_mask);
data/relion-3.1.0/src/ml_optimiser.cpp:4524:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Isolvent.read(fn_mask);
data/relion-3.1.0/src/ml_optimiser.cpp:4534:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Isolvent2.read(fn_mask2);
data/relion-3.1.0/src/ml_optimiser.cpp:4543:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Ilowpass.read(fn_lowpass_mask);
data/relion-3.1.0/src/ml_optimiser.cpp:5078:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				img.read(fn_img);
data/relion-3.1.0/src/ml_optimiser.cpp:5110:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					img.read(fn_img);
data/relion-3.1.0/src/ml_optimiser.cpp:5127:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				rec_img.read(fn_recimg);
data/relion-3.1.0/src/ml_optimiser.cpp:5480:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					Ictf.read(fn_ctf);
data/relion-3.1.0/src/ml_optimiser.cpp:8334:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
						Ictf.read(fn_ctf);
data/relion-3.1.0/src/ml_optimiser.cpp:9226:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					rec_img.read(fn_rec_img);
data/relion-3.1.0/src/ml_optimiser.cpp:9243:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
						img.read(fn_ctf);
data/relion-3.1.0/src/ml_optimiser.h:783:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv, int rank = 0);
data/relion-3.1.0/src/ml_optimiser.h:792:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(FileName fn_in, int rank = 0, bool do_prevent_preread = false);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:47:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MlOptimiserMpi::read(int argc, char **argv)
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:60:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    MlOptimiser::read(argc, argv, node->rank);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:426:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				temp.read(fn_data);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:490:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDsigma.read(fn_sigma);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2726:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Iunreg1.read(fn_root1);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2727:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Iunreg2.read(fn_root2);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2744:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				Imask.read(fn_mask);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2752:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Iunreg1.read(fn_root1);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2753:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Iunreg2.read(fn_root2);
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2885:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Itmp.read(fn_root+"_data_real.mrc");
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2899:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Itmp.read(fn_root+"_data_imag.mrc");
data/relion-3.1.0/src/ml_optimiser_mpi.cpp:2913:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Itmp.read(fn_root+"_weight.mrc");
data/relion-3.1.0/src/ml_optimiser_mpi.h:57:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(int argc, char **argv);
data/relion-3.1.0/src/motioncorr_runner.cpp:74:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MotioncorrRunner::read(int argc, char **argv, int rank)
data/relion-3.1.0/src/motioncorr_runner.cpp:376:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Iin.read(fn_gain_reference);
data/relion-3.1.0/src/motioncorr_runner.cpp:527:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Ihead.read(fn_mic, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/motioncorr_runner.cpp:976:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Ihead.read(fn_mic, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/motioncorr_runner.cpp:1037:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Igain.read(fn_gain_reference);
data/relion-3.1.0/src/motioncorr_runner.cpp:1049:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Iframes[iframe].read(fn_mic, true, frames[iframe], false, true); // mmap false, is_2D true
data/relion-3.1.0/src/motioncorr_runner.cpp:2187:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Idefect.read(fn_defect);
data/relion-3.1.0/src/motioncorr_runner.h:149:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv, int rank = 0);
data/relion-3.1.0/src/motioncorr_runner_mpi.cpp:22:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void MotioncorrRunnerMpi::read(int argc, char **argv)
data/relion-3.1.0/src/motioncorr_runner_mpi.cpp:28:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MotioncorrRunner::read(argc, argv);
data/relion-3.1.0/src/motioncorr_runner_mpi.h:43:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(int argc, char **argv);
data/relion-3.1.0/src/multidim_array.h:4235:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
            in.read(reinterpret_cast< char* >(ptr), sizeof(T));
data/relion-3.1.0/src/multidim_array.h:4255:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        	in.read(reinterpret_cast< char* >(&val), sizeof(T));
data/relion-3.1.0/src/multidim_array.h:4277:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
     void read(const FileName& fn) const
data/relion-3.1.0/src/multidim_array.h:4360:10:  [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.
    bool equal(const MultidimArray<T>& op,
data/relion-3.1.0/src/multidim_array.h:4418:16:  [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 op1.equal(op2);
data/relion-3.1.0/src/particle_subtractor.cpp:23:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void ParticleSubtractor::read(int argc, char **argv)
data/relion-3.1.0/src/particle_subtractor.cpp:96:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	opt.read(fn_opt, rank, true); // true means: prevent prereading all particle images
data/relion-3.1.0/src/particle_subtractor.cpp:104:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		opt.mydata.read(fn_sel, false, false, false, is_helical_segment);
data/relion-3.1.0/src/particle_subtractor.cpp:112:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Imask.read(fn_msk);
data/relion-3.1.0/src/particle_subtractor.cpp:262:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Ihead.read(img_name, false, -1, false, true);
data/relion-3.1.0/src/particle_subtractor.cpp:366:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD.read(fn_star, "particles");
data/relion-3.1.0/src/particle_subtractor.cpp:421:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	img.read(opt.mydata.particles[part_id].images[0].name);
data/relion-3.1.0/src/particle_subtractor.cpp:491:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ictf.read(fn_ctf);
data/relion-3.1.0/src/particle_subtractor.h:54:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/pipeline_jobs.cpp:328:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
bool RelionJob::read(std::string fn, bool &_is_continue, bool do_initialise)
data/relion-3.1.0/src/pipeline_jobs.cpp:392:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDhead.read(fn_star, "job");
data/relion-3.1.0/src/pipeline_jobs.cpp:399:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDvals.read(fn_star, "joboptions_values");
data/relion-3.1.0/src/pipeline_jobs.cpp:2408:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				manualpickjob.read(fn_job.c_str(), iscont, true); // true means do initialise
data/relion-3.1.0/src/pipeline_jobs.cpp:2846:115:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	joboptions["do_parallel_discio"] = JobOption("Use parallel disc I/O?", true, "If set to Yes, all MPI slaves will read their own images from disc. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2847:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
Otherwise, only the master will read images and send them through the network to the slaves. Parallel file systems like gluster of fhgfs are good at parallel disc I/O. NFS may break with many slaves reading in parallel. If your datasets contain particles with different box sizes, you have to say Yes.");
data/relion-3.1.0/src/pipeline_jobs.cpp:2849:43:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
All particle images of a single batch are read into memory together. The size of these batches is at least one particle per thread used. The nr_pooled_particles parameter controls how many particles are read together for each thread. If it is set to 3 and one uses 8 threads, batches of 3x8=24 particles will be read together. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2849:204:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
All particle images of a single batch are read into memory together. The size of these batches is at least one particle per thread used. The nr_pooled_particles parameter controls how many particles are read together for each thread. If it is set to 3 and one uses 8 threads, batches of 3x8=24 particles will be read together. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2849:313:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
All particle images of a single batch are read into memory together. The size of these batches is at least one particle per thread used. The nr_pooled_particles parameter controls how many particles are read together for each thread. If it is set to 3 and one uses 8 threads, batches of 3x8=24 particles will be read together. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2853:51:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	joboptions["do_preread_images"] = JobOption("Pre-read all particles into RAM?", false, "If set to Yes, all particle images will be read into computer memory, which will greatly speed up calculations on systems with slow disk access. However, one should of course be careful with the amount of RAM available. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2853:133:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	joboptions["do_preread_images"] = JobOption("Pre-read all particles into RAM?", false, "If set to Yes, all particle images will be read into computer memory, which will greatly speed up calculations on systems with slow disk access. However, one should of course be careful with the amount of RAM available. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2854:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
Because particles are read in float-precision, it will take ( N * box_size * box_size * 4 / (1024 * 1024 * 1024) ) Giga-bytes to read N particles into RAM. For 100 thousand 200x200 images, that becomes 15Gb, or 60 Gb for the same number of 400x400 particles. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2854:130:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
Because particles are read in float-precision, it will take ( N * box_size * box_size * 4 / (1024 * 1024 * 1024) ) Giga-bytes to read N particles into RAM. For 100 thousand 200x200 images, that becomes 15Gb, or 60 Gb for the same number of 400x400 particles. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2863:233:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	joboptions["do_combine_thru_disc"] = JobOption("Combine iterations through disc?", false, "If set to Yes, at the end of every iteration all MPI slaves will write out a large file with their accumulated results. The MPI master will read in all these files, combine them all, and write out a new file with the combined results. \
data/relion-3.1.0/src/pipeline_jobs.cpp:2864:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
All MPI salves will then read in the combined results. This reduces heavy load on the network, but increases load on the disc I/O. \
data/relion-3.1.0/src/pipeline_jobs.cpp:4025:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD.read(joboptions["fn_bodies"].getString());
data/relion-3.1.0/src/pipeline_jobs.h:398:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	bool read(std::string fn, bool &_is_continue, bool do_initialise = false); // return false if unsuccessful
data/relion-3.1.0/src/pipeliner.cpp:377:3:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:518:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:625:4:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:772:4:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:869:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!myjob.read(processList[current_job].name, is_continue, true)) // true means also initialise the job
data/relion-3.1.0/src/pipeliner.cpp:909:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
					read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:997:3:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1080:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1119:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1133:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDnodes.read(outnodes, "output_nodes");
data/relion-3.1.0/src/pipeliner.cpp:1159:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1240:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1311:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1382:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1398:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1404:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MDproc.read(fn_undel, "pipeline_processes");
data/relion-3.1.0/src/pipeliner.cpp:1781:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MDexported.read(fn_export);
data/relion-3.1.0/src/pipeliner.cpp:1785:2:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	read(DO_LOCK, lock_message);
data/relion-3.1.0/src/pipeliner.cpp:1818:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	mini_pipeline.read();
data/relion-3.1.0/src/pipeliner.cpp:1896:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void PipeLine::read(bool do_lock, std::string lock_message)
data/relion-3.1.0/src/pipeliner.cpp:2318:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			nr_obj = MD.read(pipeline.nodeList[mynode].name, "", NULL, "", true); // true means: only count nr entries;
data/relion-3.1.0/src/pipeliner.cpp:2324:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			nr_obj = MD.read(pipeline.nodeList[mynode].name, "", NULL, "", true); // true means: only count nr entries;
data/relion-3.1.0/src/pipeliner.cpp:2330:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			nr_obj = MD.read(pipeline.nodeList[mynode].name, "", NULL, "", true); // true means: only count nr entries;
data/relion-3.1.0/src/pipeliner.cpp:2351:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			nr_obj = MD.read(pipeline.nodeList[mynode].name, "model_classes", NULL, "", true); // true means: only count nr entries;
data/relion-3.1.0/src/pipeliner.h:216:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(bool do_lock = false, std::string lock_message = "Undefined lock message");
data/relion-3.1.0/src/postprocessing.cpp:23:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Postprocessing::read(int argc, char **argv)
data/relion-3.1.0/src/postprocessing.cpp:127:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	I1.read(fn_I1);
data/relion-3.1.0/src/postprocessing.cpp:128:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	I2.read(fn_I2);
data/relion-3.1.0/src/postprocessing.cpp:195:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Im.read(fn_mask);
data/relion-3.1.0/src/postprocessing.cpp:261:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDmtf.read(fn_mtf);
data/relion-3.1.0/src/postprocessing.cpp:1132:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Imask.read(fn_mask);
data/relion-3.1.0/src/postprocessing.cpp:1194:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I1.read(fn_I1);
data/relion-3.1.0/src/postprocessing.cpp:1195:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I2.read(fn_I2);
data/relion-3.1.0/src/postprocessing.cpp:1244:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I1.read(fn_I1);
data/relion-3.1.0/src/postprocessing.cpp:1245:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I2.read(fn_I2);
data/relion-3.1.0/src/postprocessing.cpp:1321:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I1.read(fn_I1);
data/relion-3.1.0/src/postprocessing.cpp:1327:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		I1.read(fn_I2);
data/relion-3.1.0/src/postprocessing.h:153:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/preprocessing.cpp:45:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Preprocessing::read(int argc, char **argv, int rank)
data/relion-3.1.0/src/preprocessing.cpp:152:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Imic.read(fn_mic, false, -1, false); // readData = false, select_image = -1, mapData= false, is_2D = true);
data/relion-3.1.0/src/preprocessing.cpp:297:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				MDonestack.read(fn_star);
data/relion-3.1.0/src/preprocessing.cpp:489:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD.read(fn_coord);
data/relion-3.1.0/src/preprocessing.cpp:580:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Imic.read(fn_mic, false, -1, false); // readData = false, select_image = -1, mapData= false, is_2D = true);
data/relion-3.1.0/src/preprocessing.cpp:753:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Imic.read(fn_mic);
data/relion-3.1.0/src/preprocessing.cpp:1011:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Iout.read(fn_operate_in, false);
data/relion-3.1.0/src/preprocessing.cpp:1027:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		Ipart.read(fn_operate_in, true, i);
data/relion-3.1.0/src/preprocessing.h:175:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv, int rank = 0);
data/relion-3.1.0/src/preprocessing_mpi.cpp:22:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void PreprocessingMpi::read(int argc, char **argv)
data/relion-3.1.0/src/preprocessing_mpi.cpp:28:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Preprocessing::read(argc, argv, node->rank);
data/relion-3.1.0/src/preprocessing_mpi.h:45:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/reconstructor.cpp:22:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Reconstructor::read(int argc, char **argv)
data/relion-3.1.0/src/reconstructor.cpp:119:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			DF.read(fn_sel);
data/relion-3.1.0/src/reconstructor.cpp:141:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		model.read(fn_noise);
data/relion-3.1.0/src/reconstructor.cpp:159:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img0.read(fn_img, false);
data/relion-3.1.0/src/reconstructor.cpp:237:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	It.read(fn_debug+"_data_real.mrc");
data/relion-3.1.0/src/reconstructor.cpp:263:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	It.read(fn_debug+"_data_imag.mrc");
data/relion-3.1.0/src/reconstructor.cpp:270:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	It.read(fn_debug+"_weight.mrc");
data/relion-3.1.0/src/reconstructor.cpp:286:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		sub.read(fn_sub);
data/relion-3.1.0/src/reconstructor.cpp:423:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		img.read(fn_img);
data/relion-3.1.0/src/reconstructor.cpp:491:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			Ictf.read(fn_ctf);
data/relion-3.1.0/src/reconstructor.cpp:519:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
				ctf.read(DF, DF, p);
data/relion-3.1.0/src/reconstructor.cpp:636:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			wgh.read(wghName);
data/relion-3.1.0/src/reconstructor.cpp:696:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MDfsc.read(fn_fsc);
data/relion-3.1.0/src/reconstructor.h:78:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/reconstructor_mpi.cpp:22:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void ReconstructorMpi::read(int argc, char **argv)
data/relion-3.1.0/src/reconstructor_mpi.cpp:28:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Reconstructor::read(argc, argv);
data/relion-3.1.0/src/reconstructor_mpi.h:42:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);
data/relion-3.1.0/src/rwIMAGIC.h:255:9:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120). Risk is low because the source is a
  constant string.
        strncpy(header->type,"REAL",4);
data/relion-3.1.0/src/rwIMAGIC.h:258:9:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120). Risk is low because the source is a
  constant string.
        strncpy(header->type,"PACK",4);
data/relion-3.1.0/src/rwMRC.h:282:2:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120). Risk is low because the source is a
  constant string.
	strncpy(header->map, "MAP ", 4);
data/relion-3.1.0/src/rwMRC.h:442:19:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
	strftime(label + strlen(label), MRC_LABEL_LEN - strlen(label), "%d-%b-%y  %R:%S", timeinfo);
data/relion-3.1.0/src/rwMRC.h:442:50:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
	strftime(label + strlen(label), MRC_LABEL_LEN - strlen(label), "%d-%b-%y  %R:%S", timeinfo);
data/relion-3.1.0/src/rwMRC.h:443:2:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
	strncpy(header->labels, label, MRC_LABEL_LEN);
data/relion-3.1.0/src/scheduler.cpp:188:5:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	MD.read(mystarfile, mytable);
data/relion-3.1.0/src/scheduler.cpp:607:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Schedule::read(bool do_lock, FileName fn)
data/relion-3.1.0/src/scheduler.cpp:774:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	schedule_pipeline.read();
data/relion-3.1.0/src/scheduler.cpp:1367:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		if (!myjob.read(name + it->first + '/', dummy, true))
data/relion-3.1.0/src/scheduler.cpp:1552:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ori_job.read(name + original_job_name + '/', dummy, true);
data/relion-3.1.0/src/scheduler.cpp:1715:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			myjob.read(name + current_node + '/', dummy, true); // true means initialise the job
data/relion-3.1.0/src/scheduler.cpp:1740:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			if (!myjob.read(pipeline.processList[current_job].name, dummy, true)) // true means also initialise the job
data/relion-3.1.0/src/scheduler.h:234:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(bool do_lock = false, FileName fn = "");
data/relion-3.1.0/src/symmetries.cpp:300:22:  [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 (newL.equal(L1) && newR.equal(R1))
data/relion-3.1.0/src/symmetries.cpp:300: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.
            if (newL.equal(L1) && newR.equal(R1))
data/relion-3.1.0/src/tiff_converter.cpp:39:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void TIFFConverter::read(int argc, char **argv)
data/relion-3.1.0/src/tiff_converter.cpp:66:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	frame.read(fn_movie, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/tiff_converter.cpp:73:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		frame.read(fn_movie, true, iframe, false, true);
data/relion-3.1.0/src/tiff_converter.cpp:169:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	frame.read(fn_movie, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/tiff_converter.cpp:177:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		frame.read(fn_movie, true, iframe, false, true);
data/relion-3.1.0/src/tiff_converter.cpp:252:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	frame.read(fn_movie, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/tiff_converter.cpp:258:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		frame.read(fn_movie, true, iframe, false, true);
data/relion-3.1.0/src/tiff_converter.cpp:294:6:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		MD.read(fn_in, "movies");
data/relion-3.1.0/src/tiff_converter.cpp:298:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			MD.read(fn_in, "");
data/relion-3.1.0/src/tiff_converter.cpp:334:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Ihead.read(fn_first, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/tiff_converter.cpp:353:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			gain.read(fn_gain + ":mrc");
data/relion-3.1.0/src/tiff_converter.cpp:360:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
			defects.read(fn_defects + ":mrc");
data/relion-3.1.0/src/tiff_converter.cpp:407:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	Ihead.read(fn_movie, false, -1, false, true); // select_img -1, mmap false, is_2D true
data/relion-3.1.0/src/tiff_converter.h:34:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	void read(int argc, char **argv);

ANALYSIS SUMMARY:

Hits = 1172
Lines analyzed = 206653 in approximately 5.16 seconds (40077 lines/second)
Physical Source Lines of Code (SLOC) = 145369
Hits@level = [0] 231 [1] 714 [2] 288 [3]  46 [4] 122 [5]   2
Hits@level+ = [0+] 1403 [1+] 1172 [2+] 458 [3+] 170 [4+] 124 [5+]   2
Hits/KSLOC@level+ = [0+] 9.6513 [1+] 8.06224 [2+] 3.1506 [3+] 1.16944 [4+] 0.853002 [5+] 0.0137581
Dot directories skipped = 11 (--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.