diff --git a/.gitignore b/.gitignore index e59225d6c10..60dbc94ed25 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ CTestTestfile.cmake Makefile *.[oa] ld_map.txt +install_manifest.txt # generated help files *.help.xml.h @@ -49,6 +50,8 @@ anatomicuts/AnatomiCuts.bin anatomicuts/AnatomiCuts_correspondences.bin anatomicuts/streamlineFilter.bin anatomicuts/trk_tools.bin +AntsDenoiseImageFs/AntsDenoiseImageFs +AntsN4BiasFieldCorrectionFs/AntsN4BiasFieldCorrectionFs check_siemens_dir/check_siemens_dir connectgraph/connectgraph diffusion_tool/diffusion_tool @@ -82,6 +85,7 @@ mri_and/mri_or mri_annotation2label/mri_annotation2label mri_aparc2aseg/mri_aparc2aseg mri_aparc2wmseg/mri_aparc2wmseg +mri_aparc2aseg/mri_surf2volseg mri_apply_inu_correction/mri_apply_inu_correction mri_aseg_edit_reclassify/mri_aseg_edit_reclassify mri_aseg_edit_train/mri_aseg_edit_train @@ -91,6 +95,7 @@ mri_bc_sc_bias_correct/mri_bc_sc_bias_correct mri_bias/mri_apply_bias mri_bias/mri_compute_bias mri_binarize/mri_binarize +mri_brainvol_stats/mri_brainvol_stats mri_build_priors/mri_build_priors mri_ca_label/mri_ca_label mri_ca_normalize/mri_ca_normalize @@ -217,6 +222,7 @@ mri_polv/mri_polv mri_probe_ima/mri_probe_ima mri_probedicom/mri_probedicom mri_reduce/mri_reduce +mri_refine_seg/mri_refine_seg mri_register/mri_register mri_relabel_hypointensities/mri_relabel_hypointensities mri_relabel_nonwm_hypos/mri_relabel_nonwm_hypos @@ -234,6 +240,7 @@ mri_robust_register/mri_robust_register mri_robust_register/mri_robust_template mri_sbbr/mri_sbbr mri_seg_diff/mri_seg_diff +mri_seg_overlap/mri_seg_overlap mri_segcentroids/mri_segcentroids mri_seghead/mri_seghead mri_segment/mri_segment @@ -270,6 +277,7 @@ mri_volsynth/mri_volsynth mri_warp_concat/mri_warp_concat mri_warp_convert/mri_warp_convert mri_watershed/brain_volume/mri_brain_volume +mri_watershed/brain_volume/mri_brain_volume_test mri_watershed/mri_validate_skull_stripped mri_watershed/mri_watershed mri_wbc/mri_wbc @@ -281,6 +289,7 @@ mris2rgb/mris2rgb mris_BA_segment/mris_BA_segment mris_add_template/mris_add_template mris_anatomical_stats/mris_anatomical_stats +mris_annot_diff/mris_annot_diff mris_annot_to_segmentation/mris_annot_to_segmentation mris_apply_reg/mris_apply_reg mris_aseg_distance/mris_aseg_distance @@ -340,9 +349,11 @@ mris_longitudinal_surfaces/mris_longitudinal_surfaces mris_make_average_surface/mris_make_average_surface mris_make_face_parcellation/mris_make_face_parcellation mris_make_map_surfaces/mris_make_map_surfaces +mris_make_surfaces/mris_autodet_gwstats mris_make_surfaces/mris_exvivo_surfaces mris_make_surfaces/mris_make_surfaces mris_make_surfaces/mris_mef_surfaces +mris_make_surfaces/mris_place_surface mris_make_surfaces/mris_refine_surfaces mris_make_template/mris_make_template mris_map_cuts/mris_map_cuts @@ -452,3 +463,7 @@ utils/fsPrintHelp utils/gifti_test utils/gifti_tool utils/xmlToHtml + +# testdata +*/testdata +Testing diff --git a/CMakeLists.txt b/CMakeLists.txt index f8f7114edb6..e2a4243b12d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,6 +129,9 @@ if(NOT APPLE) NAMES libgfortran.a gfortran) find_library(BLAS_LIBRARIES NAMES libopenblas.a libblas.a) find_library(LAPACK_LIBRARIES NAMES liblapack.a) + find_library(QUADMATH_LIBRARIES + HINTS /usr/lib64 /usr/lib /usr/lib/gcc/*/*/ + NAMES libquadmath.a) endif() # -------- armadillo -------- diff --git a/attic/mri_cal_normalize/CMakeLists.txt b/attic/mri_cal_normalize/CMakeLists.txt new file mode 100644 index 00000000000..0e86d09c4eb --- /dev/null +++ b/attic/mri_cal_normalize/CMakeLists.txt @@ -0,0 +1,7 @@ +project(mri_cal_normalize) + +include_directories(${FS_INCLUDE_DIRS}) + +add_executable(mri_cal_normalize mri_cal_normalize.cpp) +target_link_libraries(mri_cal_normalize utils) +install(TARGETS mri_cal_normalize DESTINATION bin) diff --git a/mri_ca_normalize/mri_cal_normalize.cpp b/attic/mri_cal_normalize/mri_cal_normalize.cpp similarity index 100% rename from mri_ca_normalize/mri_cal_normalize.cpp rename to attic/mri_cal_normalize/mri_cal_normalize.cpp diff --git a/mri_ca_normalize/CMakeLists.txt b/mri_ca_normalize/CMakeLists.txt index 6b5bd12d950..d8674143fac 100644 --- a/mri_ca_normalize/CMakeLists.txt +++ b/mri_ca_normalize/CMakeLists.txt @@ -8,7 +8,3 @@ target_link_libraries(mri_ca_normalize utils) install(TARGETS mri_ca_normalize DESTINATION bin) add_test_script(NAME mri_ca_normalize_test SCRIPT test.sh DEPENDS mri_ca_normalize) - -add_executable(mri_cal_normalize mri_cal_normalize.cpp) -target_link_libraries(mri_cal_normalize utils) -install(TARGETS mri_cal_normalize DESTINATION bin) diff --git a/mri_ca_normalize/mri_ca_normalize.cpp b/mri_ca_normalize/mri_ca_normalize.cpp index 59180390234..875bd15af50 100644 --- a/mri_ca_normalize/mri_ca_normalize.cpp +++ b/mri_ca_normalize/mri_ca_normalize.cpp @@ -1341,10 +1341,16 @@ find_control_points if (mri_ctrl) { - sprintf(fname, "%s_init_label%d.labels.mgz", fname_only, label) ; + int req = snprintf(fname, STRLEN, "%s_init_label%d.labels.mgz", fname_only, label) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing initial sample points for %s to %s\n", cma_label_to_name(label), fname); MRIwriteFrame(mri_ctrl, fname, 0) ; - sprintf(fname, "%s_init_label%d.priors.mgz", fname_only, label) ; + req = snprintf(fname, STRLEN, "%s_init_label%d.priors.mgz", fname_only, label) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing initial label priors for %s to %s\n", cma_label_to_name(label), fname); MRIwriteFrame(mri_ctrl, fname, 1) ; MRIfree(&mri_ctrl) ; diff --git a/mri_coreg/mri_coreg.cpp b/mri_coreg/mri_coreg.cpp index e12c4388302..775b2c2a3fc 100644 --- a/mri_coreg/mri_coreg.cpp +++ b/mri_coreg/mri_coreg.cpp @@ -1826,7 +1826,10 @@ MRI *MRIconformNoScale(MRI *mri, MRI *mric) // Map input to geometry template mric = MRIresample(mri, mritmp, SAMPLE_NEAREST); - sprintf(mric->fname,"%s/Conformed",mri->fname); + int req = snprintf(mric->fname,STRLEN,"%s/Conformed",mri->fname); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRIfree(&mritmp); return(mric); diff --git a/mri_edit_segmentation/mri_edit_segmentation.cpp b/mri_edit_segmentation/mri_edit_segmentation.cpp index b7409b7c3b2..0d2d2c89dc8 100644 --- a/mri_edit_segmentation/mri_edit_segmentation.cpp +++ b/mri_edit_segmentation/mri_edit_segmentation.cpp @@ -250,6 +250,9 @@ edit_hippocampus(MRI *mri_in_labeled, MRI *mri_T1, MRI *mri_out_labeled) { switch (label) { case Left_Cerebral_White_Matter: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_White_Matter: dgray = distance_to_label(mri_out_labeled, left ? Left_Cerebral_Cortex : @@ -271,8 +274,14 @@ edit_hippocampus(MRI *mri_in_labeled, MRI *mri_T1, MRI *mri_out_labeled) { left ? Left_Cerebral_Cortex : Right_Cerebral_Cortex, left ? Left_Cerebral_White_Matter : Right_Cerebral_White_Matter) ; } +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Left_Hippocampus: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Hippocampus: dgray = distance_to_label(mri_out_labeled, left ? Left_Cerebral_Cortex : @@ -349,6 +358,9 @@ edit_hippocampus(MRI *mri_in_labeled, MRI *mri_T1, MRI *mri_out_labeled) { } case Left_Cerebral_Cortex: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_Cortex: dup = distance_to_label(mri_out_labeled, left ? Left_Hippocampus : @@ -604,6 +616,9 @@ edit_amygdala(MRI *mri_in_labeled, MRI *mri_T1, MRI *mri_out_labeled) { switch (label) { case Left_Cerebral_Cortex: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_Cortex: dup = distance_to_label(mri_out_labeled, left ? Left_Amygdala : @@ -882,6 +897,9 @@ edit_lateral_ventricles(MRI *mri_in_labeled, MRI *mri_T1, MRI *mri_out_labeled) switch (label) { case Left_Inf_Lat_Vent: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Inf_Lat_Vent: dwhite = distance_to_label(mri_out_labeled, left ? Left_Cerebral_White_Matter : diff --git a/mri_edit_segmentation_with_surfaces/mri_edit_segmentation_with_surfaces.cpp b/mri_edit_segmentation_with_surfaces/mri_edit_segmentation_with_surfaces.cpp index e19c0dce033..13119cb23b1 100644 --- a/mri_edit_segmentation_with_surfaces/mri_edit_segmentation_with_surfaces.cpp +++ b/mri_edit_segmentation_with_surfaces/mri_edit_segmentation_with_surfaces.cpp @@ -649,6 +649,9 @@ relabel_hypointensities(MRI *mri, MRI *mri_inputs, */ break ; } +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Left_WM_hypointensities: case Right_WM_hypointensities: // check to see if it's outside ribbon and change it to gm if (gca) // if we have a gca, check to make sure gm is possible here diff --git a/mri_edit_wm_with_aseg/mri_edit_wm_with_aseg.cpp b/mri_edit_wm_with_aseg/mri_edit_wm_with_aseg.cpp index 1523b4f5894..2fbd0590e61 100644 --- a/mri_edit_wm_with_aseg/mri_edit_wm_with_aseg.cpp +++ b/mri_edit_wm_with_aseg/mri_edit_wm_with_aseg.cpp @@ -332,6 +332,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) break ; } +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif /* !!! no break - erase unknown if it is surrounded by only unknowns */ /* erase these labels */ @@ -373,6 +376,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) case Right_non_WM_hypointensities: if (fcd) break ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Left_Lesion: case Right_Lesion: case WM_hypointensities: @@ -440,6 +446,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) MRIvox(mri_filled, x, y, z) = AUTO_FILL ; non++ ; } +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Left_Inf_Lat_Vent: case Right_Inf_Lat_Vent: xi = (label == Left_Inf_Lat_Vent) ? mri_wm->xi[x+1] : mri_wm->xi[x-1] ; // lateral @@ -588,6 +597,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) break ; case Left_Hippocampus: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Hippocampus: { int xi ; @@ -783,6 +795,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) case Left_Lateral_Ventricle: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Lateral_Ventricle: olabel = left ? Left_Cerebral_White_Matter : Right_Cerebral_White_Matter ; if (neighborLabel(mri_seg, x, y, z, 2, olabel) > 0) @@ -879,6 +894,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) { case Left_Cerebral_Cortex: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_Cortex: case Unknown: // look for voxels that are lateral to amygdala, and inf to wm. Should be filled @@ -1025,6 +1043,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) case Left_Hippocampus: case Left_Amygdala: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Inf_Lat_Vent: case Right_Hippocampus: case Right_Amygdala: @@ -1230,6 +1251,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) { case Left_Cerebral_Cortex: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_Cortex: if (MRIvox(mri_wm, x, y, z) >= MIN_WM_VAL) { @@ -1449,6 +1473,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) { case Left_Cerebral_Cortex: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_Cortex: // make sure we aren't on the medial edge of hippo #if 0 @@ -1526,6 +1553,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) { case Left_Cerebral_Cortex: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_Cortex: // make sure we aren't on the medial edge of hippo #if 0 @@ -1815,6 +1845,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) { case Left_Cerebral_White_Matter: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Cerebral_White_Matter: hlabel = left ? Left_Hippocampus : Right_Hippocampus ; // if there is any hippo superior to this label, turn it on @@ -1863,6 +1896,9 @@ edit_segmentation(MRI *mri_wm, MRI *mri_T1, MRI *mri_seg) case Left_Hippocampus: case Left_Amygdala: left = 1 ; +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case Right_Hippocampus: case Right_Amygdala: case Right_Inf_Lat_Vent: diff --git a/mri_fill/mri_fill.cpp b/mri_fill/mri_fill.cpp index 24fc5f8e176..753292f4dbc 100644 --- a/mri_fill/mri_fill.cpp +++ b/mri_fill/mri_fill.cpp @@ -3186,8 +3186,10 @@ main(int argc, char *argv[]) "%s: could not read SUBJECTS_DIR from environment",Progname) ; strcpy(subjects_dir, cp) ; - sprintf(fname, "%s/%s/mri/transforms/%s.m3d", subjects_dir,sname, - atlas_name) ; + int req = snprintf(fname, STRLEN, "%s/%s/mri/transforms/%s.m3d", subjects_dir,sname, atlas_name); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } m3d = MRI3DreadSmall(fname) ; if (!m3d) ErrorExit(ERROR_NOFILE, @@ -3202,7 +3204,10 @@ main(int argc, char *argv[]) MRIwrite(mri_p_ventricle, "p_left_ventricle.mgz") ; } - sprintf(fname, "%s/%s/mri/T1", subjects_dir,sname) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/T1", subjects_dir, sname); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } mri_T1 = MRIread(fname) ; if (!mri_T1) ErrorExit(ERROR_NOFILE, "%s: could not read T1 volume %s\n", diff --git a/mri_normalize/mri_long_normalize.cpp b/mri_normalize/mri_long_normalize.cpp index 10b8e5456b1..2b2df4732fa 100644 --- a/mri_normalize/mri_long_normalize.cpp +++ b/mri_normalize/mri_long_normalize.cpp @@ -129,7 +129,10 @@ main(int argc, char *argv[]) tp_names[t] = (char *)calloc(strlen(cp)+1, sizeof(char)) ; strcpy(tp_names[t], cp) ; - sprintf(fname, "%s/%s.long.%s/mri/%s", sdir, cp, bname, in_fname) ; + int req = snprintf(fname, STRLEN, "%s/%s.long.%s/mri/%s", sdir, cp, bname, in_fname); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading input volume %s\n", fname) ; mri_tmp = MRIread(fname) ; if (mri_tmp == NULL) @@ -142,7 +145,10 @@ main(int argc, char *argv[]) MRIcopyFrame(mri_tmp, mri_norm, 0, t) ; MRIfree(&mri_tmp) ; - sprintf(fname, "%s/%s/mri/%s", sdir, cp, brain_name) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, cp, brain_name); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading input volume %s\n", fname) ; mri_tmp = MRIread(fname) ; if (mri_tmp == NULL) @@ -153,7 +159,11 @@ main(int argc, char *argv[]) MRIcopyHeader(mri_tmp, mri_brain) ; } - sprintf(fname, "%s/mri/transforms/%s_to_%s.lta", bdir, bname, tp_names[t]) ; + req = snprintf(fname, STRLEN, "%s/mri/transforms/%s_to_%s.lta", bdir, bname, tp_names[t]); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } + printf("reading input transform %s\n", fname) ; ltas[t] = LTAread(fname) ; if (ltas[t] == NULL) @@ -164,7 +174,10 @@ main(int argc, char *argv[]) MRIcopyFrame(mri_tmp2, mri_brain, 0, t) ; MRIfree(&mri_tmp) ; MRIfree(&mri_tmp2) ; - sprintf(fname, "%s/%s.long.%s/mri/%s", sdir, cp, bname, aseg_name) ; + req = snprintf(fname, STRLEN, "%s/%s.long.%s/mri/%s", sdir, cp, bname, aseg_name); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading input volume %s\n", fname) ; mri_tmp = MRIread(fname) ; if (mri_tmp == NULL) @@ -206,7 +219,10 @@ main(int argc, char *argv[]) mri_tmp = MRIcopyFrame(mri_norm, mri_tmp, t, 0) ; mri_bias = MRIbuildBiasImage(mri_tmp, mri_ctrl, NULL, bias_sigma) ; mri_dst = MRIapplyBiasCorrectionSameGeometry(mri_tmp, mri_bias, NULL, DEFAULT_DESIRED_WHITE_MATTER_VALUE) ; - sprintf(fname, "%s/%s.long.%s/mri/%s", sdir, tp_names[t], bname, out_fname) ; + int req = snprintf(fname, STRLEN, "%s/%s.long.%s/mri/%s", sdir, tp_names[t], bname, out_fname); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing output to %s\n", fname) ; MRIwrite(mri_dst, fname) ; } diff --git a/mri_robust_register/CMakeLists.txt b/mri_robust_register/CMakeLists.txt index b6098fc3b1f..45fb31daf38 100644 --- a/mri_robust_register/CMakeLists.txt +++ b/mri_robust_register/CMakeLists.txt @@ -12,7 +12,7 @@ endif() include_directories(${FS_INCLUDE_DIRS}) -set(FORTRAN_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${GFORTRAN_LIBRARIES}) +set(FORTRAN_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${GFORTRAN_LIBRARIES} ${QUADMATH_LIBRARIES}) # mri_robust_register add_executable( diff --git a/mri_robust_register/MultiRegistration.cpp b/mri_robust_register/MultiRegistration.cpp index db9713503c1..ccdcfdec878 100644 --- a/mri_robust_register/MultiRegistration.cpp +++ b/mri_robust_register/MultiRegistration.cpp @@ -1523,7 +1523,9 @@ bool MultiRegistration::initialXforms(int tpi, bool fixtp, int maxres, //average translation meant = (1.0 / nin) * meant; if (debug) + { vnl_matlab_print(vcl_cout,meant,"meant",vnl_matlab_print_format_long);std::cout << std::endl; + } // find mean rotation or linear map (in RAS coordinates) vnl_matrix_fixed meanr; diff --git a/mri_stats2seg/mri_stats2seg.cpp b/mri_stats2seg/mri_stats2seg.cpp index 480eb12c0dd..da7e660839c 100644 --- a/mri_stats2seg/mri_stats2seg.cpp +++ b/mri_stats2seg/mri_stats2seg.cpp @@ -469,7 +469,10 @@ int LoadSuesTable(char *fname, int col1, int log10flag, memset(tmpstr2,'\0',2000); sscanf(tmpstr,"%s",tmpstr2); memcpy(hemi,tmpstr2,2); - sprintf(segname,"ctx-%2s-%s",hemi,&(tmpstr2[3])); + int req = snprintf(segname,2000,"ctx-%2s-%s",hemi,&(tmpstr2[3])); + if (req >= 2000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } CTABfindName(fsenv->ctab, segname, &segindex); if (segindex < 0) { printf("ERROR: reading %s, cannot find %s in color table\n", diff --git a/mri_watershed/brain_volume/mri_brain_volume.cpp b/mri_watershed/brain_volume/mri_brain_volume.cpp index b67e4366c7c..7a2b3275004 100644 --- a/mri_watershed/brain_volume/mri_brain_volume.cpp +++ b/mri_watershed/brain_volume/mri_brain_volume.cpp @@ -354,7 +354,10 @@ int main(int argc, char *argv[]) { char timeString[256]; getTimeString(timeString); char filename[256]; - sprintf(filename, "%s-%s.mgh", "binarized", timeString); + int req = snprintf(filename, 256, "%s-%s.mgh", "binarized", timeString); + if (req >= 256) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRIwrite(mri_with_skull, filename); } /* Main routine *********************/ @@ -1044,7 +1047,7 @@ static int Pre_CharSorting(STRIP_PARMS *parms,MRI_variables *MRI_var) { for (k=0;kBasin[k][j][i].next)->ambiguous, ((BasinCell*)MRI_var->Basin[k][j][i].next)->size); free((BasinCell*)MRI_var->Basin[k][j][i].next); +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case 9: MRI_var->Basin[k][j][i].type=3; break; @@ -2350,14 +2356,20 @@ static void Template_Deformation(STRIP_PARMS *parms,MRI_variables *MRI_var) { getTimeString(timeString); char filename[256]; if (parms->surf_dbg) { - sprintf(filename, "surface1-%s-%.2f", timeString, parms->forceParam); + int req = snprintf(filename, 256, "surface1-%s-%.2f", timeString, parms->forceParam); + if (req >= 256) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwrite(MRI_var->mris, filename); } fprintf(stderr, "\n calcForceGM... "); init_direction(MRI_var); MRISfit(MRI_var, calcForceGM, parms->forceParam); if (parms->surf_dbg) { - sprintf(filename, "surfaceFinal-%s-%.2f", timeString, parms->forceParam); + int req = snprintf(filename, 256, "surfaceFinal-%s-%.2f", timeString, parms->forceParam); + if (req >= 256) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwrite(MRI_var->mris, filename); } // diff --git a/mri_watershed/mri_watershed.cpp b/mri_watershed/mri_watershed.cpp index d53a9f26327..634232a424a 100644 --- a/mri_watershed/mri_watershed.cpp +++ b/mri_watershed/mri_watershed.cpp @@ -1963,7 +1963,14 @@ void FindMainWmComponent(MRI_variables *MRI_var) // assign to T1table mri_seg=&mri_segmentation->segments[max]; +#if GCC_VERSION > 80000 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Walloc-size-larger-than=" +#endif MRI_var->T1Table=(Coord*)calloc(maxarea,sizeof(Coord)); +#if GCC_VERSION > 80000 +#pragma GCC diagnostic pop +#endif MRI_var->T1nbr=maxarea; if (!MRI_var->T1Table) @@ -2417,7 +2424,7 @@ int Pre_CharSorting(STRIP_PARMS *parms,MRI_variables *MRI_var) for (j=0; jBasin[k][j][i].next)->ambiguous, ((BasinCell*)MRI_var->Basin[k][j][i].next)->size); free((BasinCell*)MRI_var->Basin[k][j][i].next); +#if __GNUC__ >= 8 + [[gnu::fallthrough]]; +#endif case 9: MRI_var->Basin[k][j][i].type=3; break; diff --git a/mris_calc/mris_calc.cpp b/mris_calc/mris_calc.cpp index ede57e92169..a22317b03ce 100644 --- a/mris_calc/mris_calc.cpp +++ b/mris_calc/mris_calc.cpp @@ -705,13 +705,11 @@ simpleSynopsis_show(void) { char pch_errorMessage[STRBUF]; - sprintf(pch_errorMessage, "Insufficient number of arguments."); sprintf(pch_errorMessage, - "%s\nYou should specify ' [ | ]'", - pch_errorMessage); - sprintf(pch_errorMessage, - "%s\nUse a '-u' for full usage instructions.", - pch_errorMessage); + "Insufficient number of arguments.\n" + "You should specify ' [ | ]'\n" + "Use a '-u' for full usage instructions."); + ErrorExit(10, "%s: %s", G_pch_progname, pch_errorMessage); } @@ -757,14 +755,11 @@ error_exit( char pch_errorMessage[STRBUF]; strcpy(pch_errorMessage, ""); - sprintf(pch_errorMessage, "\n%s:", G_pch_progname); - sprintf(pch_errorMessage, - "%s\n\tSorry, but I seem to have encountered an error.", - pch_errorMessage); - sprintf(pch_errorMessage, - "%s\n\tWhile %s,", pch_errorMessage, apch_action); - sprintf(pch_errorMessage, - "%s\n\t%s\n", pch_errorMessage, apch_error); + sprintf(pch_errorMessage, "\n%s:\n" + "\tSorry, but I seem to have encountered an error.\n" + "\tWhile %s,\n" + "\t%s\n", + G_pch_progname, apch_action, apch_error); fprintf(stderr, "%s", pch_errorMessage); fprintf(stderr, "\n"); diff --git a/mris_compute_overlap/mris_compute_overlap.cpp b/mris_compute_overlap/mris_compute_overlap.cpp index 216f42ba008..f811c5c2959 100644 --- a/mris_compute_overlap/mris_compute_overlap.cpp +++ b/mris_compute_overlap/mris_compute_overlap.cpp @@ -91,7 +91,10 @@ main(int argc, char *argv[]) { Progname) ; strcpy(sdir, cp) ; } - sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject_name, hemi, surf_name) ; + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject_name, hemi, surf_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } mris = MRISread(fname) ; if (!mris) ErrorExit diff --git a/mris_curvature/mris_curvature.cpp b/mris_curvature/mris_curvature.cpp index d3701f6e231..7465c533b93 100644 --- a/mris_curvature/mris_curvature.cpp +++ b/mris_curvature/mris_curvature.cpp @@ -120,7 +120,10 @@ main(int argc, char *argv[]) if (patch_flag) /* read the orig surface, then the patch file */ { - sprintf(fname, "%s/%s.orig", path, hemi) ; + int req = snprintf(fname, STRLEN, "%s/%s.orig", path, hemi) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } mris = MRISfastRead(fname) ; if (!mris) ErrorExit(ERROR_NOFILE, "%s: could not read surface file %s", @@ -189,7 +192,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.param", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.param", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing parameterized curvature to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -219,7 +225,10 @@ main(int argc, char *argv[]) { MRISuseCurvatureDifference(mris) ; MRISaverageCurvatures(mris, navgs) ; - sprintf(fname, "%s/%s%s.diff", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.diff", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing curvature difference to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -232,7 +241,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.ratio", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.ratio", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing curvature ratio to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -245,7 +257,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.contrast", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.contrast", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing curvature contrast to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -261,7 +276,10 @@ main(int argc, char *argv[]) neg = MRIScountNegativeTriangles(mris) ; MRISuseNegCurvature(mris) ; MRISaverageCurvatures(mris, navgs) ; - sprintf(fname, "%s/%s%s.neg", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.neg", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing negative vertex curvature to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "%d negative triangles\n", neg) ; @@ -302,7 +320,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.max", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.max", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing curvature maxima to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -316,7 +337,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.min", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.min", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing curvature minima to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -331,7 +355,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.stretch", path,name,suffix) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.stretch", path,name,suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing curvature stretch to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; @@ -345,7 +372,10 @@ main(int argc, char *argv[]) MRIShistoThresholdCurvature(mris, cthresh) ; } MRISaverageCurvatures(mris, navgs) ; - sprintf(fname, "%s/%s%s.K%s", path,name, suffix, output_type) ; + int req = snprintf(fname, STRLEN, "%s/%s%s.K%s", path,name, suffix, output_type) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing Gaussian curvature to %s...", fname) ; if (normalize) { @@ -362,7 +392,10 @@ main(int argc, char *argv[]) { MRISnormalizeCurvature(mris,which_norm) ; } - sprintf(fname, "%s/%s%s.H%s", path,name, suffix,output_type) ; + req = snprintf(fname, STRLEN, "%s/%s%s.H%s", path,name, suffix,output_type) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "done.\nwriting mean curvature to %s...", fname) ; MRISwriteCurvature(mris, fname) ; fprintf(stderr, "done.\n") ; diff --git a/mris_curvature_stats/mris_curvature_stats.cpp b/mris_curvature_stats/mris_curvature_stats.cpp index 9a569c0d1b1..59dba65aa3a 100644 --- a/mris_curvature_stats/mris_curvature_stats.cpp +++ b/mris_curvature_stats/mris_curvature_stats.cpp @@ -555,8 +555,14 @@ main(int argc, char *argv[]) subject_name = argv[1] ; hemi = argv[2] ; - sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject_name, hemi, surf_name) ; - sprintf(pch_surface, "%s/%s.%s", subject_name, hemi, surf_name); + int req = snprintf(fname, STRBUF, "%s/%s/surf/%s.%s", sdir, subject_name, hemi, surf_name) ; + if( req >= STRBUF ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } + req = snprintf(pch_surface, 16384, "%s/%s.%s", subject_name, hemi, surf_name); + if( req >= STRBUF ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } cprints("Setting surface", pch_surface); cprints("Reading surface...", ""); mris = MRISread(fname) ; @@ -1160,64 +1166,97 @@ MRIS_surfaceIntegrals_report( strcpy(pch_processedArea, "Whole Surface"); } - sprintf(pch_misc, " Mean Vertex Separation (%s):", pch_processedArea); + int req = snprintf(pch_misc, STRBUF, " Mean Vertex Separation (%s):", pch_processedArea); + if( req >= STRBUF ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Curvature Calculation Type:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); - sprintf(tmp, "%12s\n", Gpch_calc); + req = snprintf(tmp, 1024, "%12s\n", Gpch_calc); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", pch_curveName, pch_misc); + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, pch_misc); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f +- %2.5f mm\n", apmris->avg_vertex_dist, apmris->std_vertex_dist); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", pch_curveName, " Total Surface Area:"); + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Total Surface Area:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f mm^2\n", apmris->total_area); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", pch_curveName, " Total Number of Vertices:"); + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Total Number of Vertices:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5d\n", apmris->nvertices); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Average Vertex Area (Whole Surface):"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f mm^2\n", apmris->avg_vertex_area); strcat(apch_report,tmp); if(Gb_filter || label_name) { - sprintf(tmp, "%10s%-40s", pch_curveName, " ROI Surface Area:"); + int req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " ROI Surface Area:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f mm^2\n", f_SInaturalArea); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", pch_curveName, " ROI Number of Vertices:"); + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " ROI Number of Vertices:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5d\n", SInaturalVertices); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " ROI Surface Area Percentage:"); + if( req >= STRBUF ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.2f%s\n", 100 * (float)f_SInaturalArea / apmris->total_area, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " ROI Surface Vertex Percentage:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.2f%s\n", @@ -1225,8 +1264,11 @@ MRIS_surfaceIntegrals_report( strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Average Vertex Area (ROI Surface):"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f mm^2\n", f_SInaturalArea / SInaturalVertices); @@ -1238,40 +1280,55 @@ MRIS_surfaceIntegrals_report( } } - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Natural Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f\n", f_SInatural); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Rectified Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f\n", f_SIabs); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Positive Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f\n", f_SIpos); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Negative Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp,"%12.5f\n", f_SIneg); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Mean Natural Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %d (%05.2f%s) vertices\n", @@ -1280,8 +1337,11 @@ MRIS_surfaceIntegrals_report( "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Mean Rectified Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %d (%05.2f%s) vertices\n", @@ -1289,8 +1349,11 @@ MRIS_surfaceIntegrals_report( 100 * (float)SIabsVertices / totalVertices, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Mean Positive Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %d (%05.2f%s) vertices\n", @@ -1298,8 +1361,11 @@ MRIS_surfaceIntegrals_report( 100 * (float)SIposVertices / totalVertices, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " Mean Negative Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %d (%05.2f%s) vertices\n", @@ -1307,8 +1373,11 @@ MRIS_surfaceIntegrals_report( 100 * (float)SInegVertices / totalVertices, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " AreaNorm Natural Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %f (%05.2f%s) mm^2\n", @@ -1316,8 +1385,11 @@ MRIS_surfaceIntegrals_report( 100 * f_SInaturalArea / f_totalSurfaceArea, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " AreaNorm Rectified Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %f (%05.2f%s) mm^2\n", @@ -1325,8 +1397,11 @@ MRIS_surfaceIntegrals_report( 100 * f_SIabsArea / f_totalSurfaceArea, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " AreaNorm Positive Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %f (%05.2f%s) mm^2\n", @@ -1334,8 +1409,11 @@ MRIS_surfaceIntegrals_report( 100 * f_SIposArea / f_totalSurfaceArea, "%"); strcat(apch_report,tmp); - sprintf(tmp, "%10s%-40s", + req = snprintf(tmp, 1024, "%10s%-40s", pch_curveName, " AreaNorm Negative Surface Integral:"); + if( req >= 1024 ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcat(apch_report,tmp); sprintf(tmp, "%12.5f across %f (%05.2f%s) mm^2\n", @@ -1406,14 +1484,21 @@ MRIS_curvatureStats_analyze( // First the mean/sigma results Gf_mean = MRIScomputeAverageCurvature(apmris, &Gf_sigma); if(aesot == e_Raw) { - sprintf(pch_text, + int req = snprintf(pch_text, STRBUF, "\n%s +- (using '%s.%s'):", Gppch[aesot], hemi, curv_fname); + if( req >= STRBUF ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } strcpy(pch_units, ""); - } else - sprintf(pch_text, - "\n%s +- (using '%s.%s'):", - Gppch[aesot], hemi, surf_name); + } else { + int req = snprintf(pch_text, STRBUF, + "\n%s +- (using '%s.%s'):", + Gppch[aesot], hemi, surf_name); + if( req >= STRBUF ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } + } fprintf(GpSTDOUT, "%-50s", pch_text); fprintf(GpSTDOUT, " %12.5f +- %2.4f %s\n", Gf_mean, Gf_sigma, pch_units); diff --git a/mris_divide_parcellation/mris_divide_parcellation.cpp b/mris_divide_parcellation/mris_divide_parcellation.cpp index ec90ba73a58..278364d04a0 100644 --- a/mris_divide_parcellation/mris_divide_parcellation.cpp +++ b/mris_divide_parcellation/mris_divide_parcellation.cpp @@ -174,7 +174,10 @@ int main(int argc, char *argv[]) { strcpy(sdir, cp) ; } - sprintf(fname, "%s/%s/surf/%s.sphere", sdir, subject, hemi) ; + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.sphere", sdir, subject, hemi) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } mris = MRISread(fname) ; if (mris == NULL) ErrorExit(ERROR_NOFILE, "%s: could not read surface from %s", diff --git a/mris_fix_topology/mris_fix_topology.cpp b/mris_fix_topology/mris_fix_topology.cpp index f720178647e..2ffea673159 100644 --- a/mris_fix_topology/mris_fix_topology.cpp +++ b/mris_fix_topology/mris_fix_topology.cpp @@ -187,7 +187,10 @@ main(int argc, char *argv[]) strcpy(sdir, cp) ; } - sprintf(fname, "%s/%s/%s/%s.%s", sdir, sname, surf_dir, hemi, sphere_name) ; + int req = snprintf(fname, STRLEN, "%s/%s/%s/%s.%s", sdir, sname, surf_dir, hemi, sphere_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading input surface %s...\n", fname) ; mris = MRISreadOverAlloc(fname,nVFMultiplier) ; if (!mris) @@ -206,7 +209,10 @@ main(int argc, char *argv[]) /* at this point : canonical vertices */ MRISsaveVertexPositions(mris, CANONICAL_VERTICES) ; - sprintf(fname, "%s/%s/mri/%s", sdir, sname, brain_name) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, brain_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) { strcat(fname,".mgz"); @@ -226,7 +232,10 @@ main(int argc, char *argv[]) MRIscalarMul(mri, mri, 255/fmax) ; } } - sprintf(fname, "%s/%s/mri/%s", sdir, sname, wm_name) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, wm_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) { strcat(fname,".mgz"); @@ -284,15 +293,21 @@ main(int argc, char *argv[]) if (write_inflated) { MRISrestoreVertexPositions(mris_corrected, TMP_VERTICES) ; - sprintf(fname, "%s/%s/%s/%s.%s%s", + int req = snprintf(fname, STRLEN, "%s/%s/%s/%s.%s%s", sdir,sname,surf_dir, hemi,inflated_name,suffix); + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing corrected surface to %s...\n", fname) ; MRISwrite(mris_corrected, fname) ; } MRISrestoreVertexPositions(mris_corrected, ORIGINAL_VERTICES) ; /* at this point : smoothed corrected orig vertices = solution */ - sprintf(fname, "%s/%s/%s/%s.%s%s", sdir, sname, surf_dir, hemi, out_name,suffix); + req = snprintf(fname, STRLEN, "%s/%s/%s/%s.%s%s", sdir, sname, surf_dir, hemi, out_name,suffix); + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing corrected surface to %s...\n", fname) ; MRISwrite(mris_corrected, fname) ; @@ -300,7 +315,10 @@ main(int argc, char *argv[]) MRISmarkOrientationChanges(mris_corrected); /* - sprintf(fname, "%s/%s/%s/%s.%s", sdir, sname, surf_dir, hemi, "ico_geo") ; + int req = snprintf(fname, STRLEN, "%s/%s/%s/%s.%s", sdir, sname, surf_dir, hemi, "ico_geo") ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing output surface to %s...\n", fname) ; MRISwrite(mris_corrected, fname) ; */ @@ -699,7 +717,10 @@ get_option(int argc, char *argv[]) else if (!stricmp(option, "openmp") || !stricmp(option, "threads") ) { char str[STRLEN] ; - sprintf(str, "OMP_NUM_THREADS=%d", atoi(argv[2])); + int req = snprintf(str, STRLEN, "OMP_NUM_THREADS=%d", atoi(argv[2])); + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncatqion on line " << __LINE__ << std::endl; + } putenv(str) ; #ifdef HAVE_OPENMP omp_set_num_threads(atoi(argv[2])); diff --git a/mris_left_right_register/mris_left_right_register.cpp b/mris_left_right_register/mris_left_right_register.cpp index 86feae344be..b81036e9bf5 100644 --- a/mris_left_right_register/mris_left_right_register.cpp +++ b/mris_left_right_register/mris_left_right_register.cpp @@ -131,7 +131,6 @@ main(int argc, char *argv[]) ErrorInit(NULL, NULL, NULL) ; DiagInit(NULL, NULL, NULL) ; - memset(&parms, 0, sizeof(parms)) ; parms.projection = PROJECT_SPHERE ; parms.flags |= IP_USE_CURVATURE ; parms.tol = 0.5 ; // was 1e-0*2.5 @@ -268,7 +267,10 @@ main(int argc, char *argv[]) FileNamePath(template_fname, surf_dir) ; if (curvature_names[sno]) /* read in precomputed curvature file */ { - sprintf(fname, "%s/%s.%s", surf_dir, template_hemi, curvature_names[sno]) ; + int req = snprintf(fname, STRLEN, "%s/%s.%s", surf_dir, template_hemi, curvature_names[sno]) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadCurvatureFile(mris_template, fname) != NO_ERROR) ErrorExit(Gerror, "%s: could not read curvature file '%s'\n", @@ -280,7 +282,10 @@ main(int argc, char *argv[]) } else /* compute curvature of surface */ { - sprintf(fname, "%s/%s.%s", surf_dir, template_hemi, surface_names[sno]) ; + int req = snprintf(fname, STRLEN, "%s/%s.%s", surf_dir, template_hemi, surface_names[sno]) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadVertexPositions(mris_template, fname) != NO_ERROR) ErrorExit(ERROR_NOFILE, "%s: could not read surface file %s", diff --git a/mris_make_surfaces/CMakeLists.txt b/mris_make_surfaces/CMakeLists.txt index 830b32b5195..0fba4ee024c 100644 --- a/mris_make_surfaces/CMakeLists.txt +++ b/mris_make_surfaces/CMakeLists.txt @@ -43,6 +43,8 @@ add_executable(mris_mef_surfaces mris_mef_surfaces.cpp) target_link_libraries(mris_mef_surfaces utils) install(TARGETS mris_mef_surfaces DESTINATION bin) -add_executable(mris_exvivo_surfaces mris_exvivo_surfaces.cpp) -target_link_libraries(mris_exvivo_surfaces utils) -install(TARGETS mris_exvivo_surfaces DESTINATION bin) +if(NOT MINIMAL) + add_executable(mris_exvivo_surfaces mris_exvivo_surfaces.cpp) + target_link_libraries(mris_exvivo_surfaces utils) + install(TARGETS mris_exvivo_surfaces DESTINATION bin) +endif() diff --git a/mris_make_surfaces/mris_mef_surfaces.cpp b/mris_make_surfaces/mris_mef_surfaces.cpp index a51a61cdac0..dac6820282f 100644 --- a/mris_make_surfaces/mris_mef_surfaces.cpp +++ b/mris_make_surfaces/mris_mef_surfaces.cpp @@ -197,7 +197,6 @@ main(int argc, char *argv[]) { ErrorInit(NULL, NULL, NULL) ; DiagInit(NULL, NULL, NULL) ; - memset(&parms, 0, sizeof(parms)) ; parms.projection = NO_PROJECTION ; parms.tol = 1e-4 ; parms.dt = 0.5f ; @@ -253,7 +252,10 @@ main(int argc, char *argv[]) { "%s: FREESURFER_HOME not defined in environment.\n", Progname) ; strcpy(mdir, cp) ; - sprintf(fname, "%s/%s/mri/filled", sdir, sname) ; + int req = snprintf(fname, STRLEN, "%s/%s/mri/filled", sdir, sname) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) strcat(fname, ".mgz"); fprintf(stderr, "reading volume %s...\n", fname) ; mri_filled = MRIread(fname) ; @@ -269,7 +271,10 @@ main(int argc, char *argv[]) { replace_val = lh_label ; } - sprintf(fname, "%s/%s/mri/%s", sdir, sname, T1_30_name) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, T1_30_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) strcat(fname, ".mgz"); fprintf(stderr, "reading volume %s...\n", fname) ; mri_T1_30 = MRIread(fname) ; @@ -278,7 +283,10 @@ main(int argc, char *argv[]) { ErrorExit(ERROR_NOFILE, "%s: could not read input volume %s", Progname, fname) ; - sprintf(fname, "%s/%s/mri/%s", sdir, sname, T1_5_name) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, T1_5_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) strcat(fname, ".mgz"); fprintf(stderr, "reading volume %s...\n", fname) ; mri_T1_5 = MRIread(fname) ; @@ -287,7 +295,10 @@ main(int argc, char *argv[]) { ErrorExit(ERROR_NOFILE, "%s: could not read input volume %s", Progname, fname) ; - sprintf(fname, "%s/%s/mri/%s", sdir, sname, em_name) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, em_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) strcat(fname, ".mgz"); fprintf(stderr, "reading volume %s...\n", fname) ; mri_em_seg = MRIread(fname) ; @@ -331,7 +342,10 @@ main(int argc, char *argv[]) { if (Gdiag & DIAG_WRITE && DIAG_VERBOSE_ON) MRIwrite(mri_T1_30, "r30.mgz") ; - sprintf(fname, "%s/%s/mri/wm", sdir, sname) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/wm", sdir, sname) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) strcat(fname, ".mgz"); fprintf(stderr, "reading volume %s...\n", fname) ; mri_wm = MRIread(fname) ; @@ -354,7 +368,10 @@ main(int argc, char *argv[]) { gray_mean[0], gray_mean[1], gray_std[0], gray_std[1]); MRIfree(&mri_wm) ; - sprintf(fname, "%s/%s/surf/%s.%s%s", sdir, sname, hemi, orig_name, suffix) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s%s", sdir, sname, hemi, orig_name, suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "reading original surface position from %s...\n", fname) ; mris = MRISreadOverAlloc(fname, 1.1) ; if (!mris) @@ -458,8 +475,11 @@ main(int argc, char *argv[]) { } if (!nowhite) { - sprintf(fname, "%s/%s/surf/%s.%s%s%s", sdir, sname,hemi,white_matter_name, + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s%s%s", sdir, sname,hemi,white_matter_name, output_suffix,suffix); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing white matter surface to %s...\n", fname) ; MRISaverageVertexPositions(mris, smoothwm) ; MRISwrite(mris, fname) ; @@ -595,8 +615,11 @@ main(int argc, char *argv[]) { } } - sprintf(fname, "%s/%s/surf/%s.%s%s%s", sdir, sname, hemi, pial_name, + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s%s%s", sdir, sname, hemi, pial_name, output_suffix, suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing pial surface to %s...\n", fname) ; MRISwrite(mris, fname) ; @@ -620,8 +643,11 @@ main(int argc, char *argv[]) { if (graymid) { MRISsaveVertexPositions(mris, TMP_VERTICES) ; mrisFindMiddleOfGray(mris) ; - sprintf(fname, "%s/%s/surf/%s.%s%s", sdir, sname, hemi, GRAYMID_NAME, + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s%s", sdir, sname, hemi, GRAYMID_NAME, suffix) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing layer IV surface to %s...\n", fname) ; MRISwrite(mris, fname) ; MRISrestoreVertexPositions(mris, TMP_VERTICES) ; diff --git a/mris_make_surfaces/mris_place_surface.cpp b/mris_make_surfaces/mris_place_surface.cpp index 7b16b82a09e..8ecb62c8951 100644 --- a/mris_make_surfaces/mris_place_surface.cpp +++ b/mris_make_surfaces/mris_place_surface.cpp @@ -269,7 +269,6 @@ int main(int argc, char **argv) DiagInit(NULL, NULL, NULL) ; Gdiag |= DIAG_SHOW ; - memset(&parms, 0, sizeof(parms)) ; // don't let gradient use exterior information (slows things down) parms.fill_interior = 0 ; parms.projection = NO_PROJECTION ; diff --git a/mris_make_surfaces/mris_refine_surfaces.cpp b/mris_make_surfaces/mris_refine_surfaces.cpp index cbfdb24c5ea..e9140453478 100644 --- a/mris_make_surfaces/mris_refine_surfaces.cpp +++ b/mris_make_surfaces/mris_refine_surfaces.cpp @@ -199,7 +199,6 @@ main(int argc, char *argv[]) { ErrorInit(NULL, NULL, NULL) ; DiagInit(NULL, NULL, NULL) ; - memset(&parms, 0, sizeof(parms)) ; parms.projection = NO_PROJECTION ; parms.fill_interior = 0 ; // don't let gradient use exterior information (slows things down) parms.tol = 1e-4 ; @@ -279,7 +278,10 @@ main(int argc, char *argv[]) { /////////////////////////////////////////////////////////////////////// // read orig surface /////////////////////////////////////////////////////////////////////// - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi, orig_name); + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi, orig_name); + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "reading original surface position from %s...\n", fname) ; mris = MRISreadOverAlloc(fname, 1.1) ; // this tries to get src c_(ras) info @@ -290,7 +292,10 @@ main(int argc, char *argv[]) { /////////////////////////////////////////////////////////////////////// // read hires volume /////////////////////////////////////////////////////////////////////// - sprintf(fname, "%s/%s/mri/%s", sdir, sname, argv[3]) ; + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, argv[3]) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MGZ) strcat(fname, ".mgz"); fprintf(stderr, "reading hires volume %s...\n", fname) ; @@ -436,7 +441,10 @@ main(int argc, char *argv[]) { ///////////////////////////////////////////////////////////////////////////// if (argc > 4) // label specified explicitly { - sprintf(fname, "%s/%s/label/%s", sdir, sname, argv[4]) ; + req = snprintf(fname, STRLEN, "%s/%s/label/%s", sdir, sname, argv[4]) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "reading the label file %s...\n", fname); hires_label = LabelRead(NULL, fname) ; if (!hires_label) @@ -447,7 +455,10 @@ main(int argc, char *argv[]) { for (i = 0 ; i < num_other_labels ; i++) { LABEL *olabel ; - sprintf(fname, "%s/%s/label/%s", sdir, sname, other_label_names[i]) ; + req = snprintf(fname, STRLEN, "%s/%s/label/%s", sdir, sname, other_label_names[i]) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "reading the label file %s...\n", fname); olabel = LabelRead(NULL, fname) ; if (!olabel) @@ -554,8 +565,10 @@ main(int argc, char *argv[]) { if (nbrs > 1) MRISsetNeighborhoodSizeAndDist(mris, nbrs) ; - sprintf(parms.base_name, "%s%s%s", - white_matter_name, output_suffix, suffix) ; + req = snprintf(parms.base_name, STRLEN, "%s%s%s", white_matter_name, output_suffix, suffix); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } /////////////////////////////////////////////////////////////////////////// MRIScomputeMetricProperties(mris) ; /* recompute surface normals */ @@ -685,8 +698,11 @@ main(int argc, char *argv[]) { ///////////////////////////////////////////////////////////////////////// if (!nowhite) { - sprintf(fname, "%s/%s/surf/%s.%s%s%s", sdir, sname,hemi,white_matter_name, + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s%s%s", sdir, sname,hemi,white_matter_name, output_suffix,suffix); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing white matter surface to %s...\n", fname) ; ///////////////////////////////////////////////////////////////////////// // convert surface into lowres volume surface again for more processing @@ -702,14 +718,20 @@ main(int argc, char *argv[]) { MRIScomputeSecondFundamentalForm(mris) ; MRISuseMeanCurvature(mris) ; MRISaverageCurvatures(mris, curvature_avgs) ; - sprintf(fname, "%s.curv%s%s", + req = snprintf(fname, STRLEN, "%s.curv%s%s", mris->hemisphere == LEFT_HEMISPHERE?"lh":"rh", output_suffix, suffix); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "writing smoothed curvature to %s\n", fname) ; MRISwriteCurvature(mris, fname) ; - sprintf(fname, "%s.area%s%s", + req = snprintf(fname, STRLEN, "%s.area%s%s", mris->hemisphere == LEFT_HEMISPHERE?"lh":"rh", output_suffix, suffix); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISprintTessellationStats(mris, stderr) ; // restore to hires for further processing @@ -717,7 +739,10 @@ main(int argc, char *argv[]) { } } else /* read in previously generated white matter surface */ { - sprintf(fname, "%s", white_matter_name) ; + req = snprintf(fname, STRLEN, "%s", white_matter_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadVertexPositions(mris, fname) != NO_ERROR) ErrorExit(Gerror, "%s: could not read white matter surfaces.", Progname) ; @@ -740,7 +765,10 @@ main(int argc, char *argv[]) { // now pial surface /////////////////////////////////////////////////////////////////////// parms.t = parms.start_t = 0 ; - sprintf(parms.base_name, "%s%s%s", pial_name, output_suffix, suffix) ; + req = snprintf(parms.base_name, STRLEN, "%s%s%s", pial_name, output_suffix, suffix); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } parms.niterations = ngray ; MRISsaveVertexPositions(mris, ORIGINAL_VERTICES) ; /* save white-matter positions */ @@ -855,8 +883,11 @@ main(int argc, char *argv[]) { } } - sprintf(fname, "%s/%s/surf/%s.%s%s%s", sdir, sname, hemi, pial_name, + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s%s%s", sdir, sname, hemi, pial_name, output_suffix, suffix) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } ///////////////////////////////////////////////////////////////////////// // write out pial surface ///////////////////////////////////////////////////////////////////////// @@ -877,7 +908,10 @@ main(int argc, char *argv[]) { MRISmeasureCorticalThickness(mris, nbhd_size, max_thickness) ; fprintf(stderr, "writing cortical thickness estimate to 'thickness' file.\n") ; - sprintf(fname, "thickness%s%s", output_suffix, suffix) ; + req = snprintf(fname, STRLEN, "thickness%s%s", output_suffix, suffix) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwriteCurvature(mris, fname) ; /* at this point, the v->curv slots contain the cortical surface. Now diff --git a/mris_sphere/mris_remove_negative_vertices.cpp b/mris_sphere/mris_remove_negative_vertices.cpp index 448474a65fc..38dfb628397 100644 --- a/mris_sphere/mris_remove_negative_vertices.cpp +++ b/mris_sphere/mris_remove_negative_vertices.cpp @@ -68,7 +68,6 @@ main(int argc, char *argv[]) ErrorInit(NULL, NULL, NULL) ; DiagInit(NULL, NULL, NULL) ; - memset(&parms, 0, sizeof(parms)) ; parms.dt = 1 ; parms.tol = .5 /*1e-1*/ ; parms.min_averages = 0 ; diff --git a/mris_sphere/mris_sphere.cpp b/mris_sphere/mris_sphere.cpp index 215e01e51b4..ca38fc427c2 100644 --- a/mris_sphere/mris_sphere.cpp +++ b/mris_sphere/mris_sphere.cpp @@ -122,7 +122,6 @@ main(int argc, char *argv[]) ErrorInit(NULL, NULL, NULL) ; DiagInit(NULL, NULL, NULL) ; - memset(&parms, 0, sizeof(parms)) ; parms.dt = .05 ; parms.projection = PROJECT_ELLIPSOID ; parms.tol = .5 /*1e-1*/ ; @@ -312,7 +311,6 @@ main(int argc, char *argv[]) INTEGRATION_PARMS inflation_parms ; MRIScenter(mris, mris) ; - memset(&inflation_parms, 0, sizeof(INTEGRATION_PARMS)) ; strcpy(inflation_parms.base_name, parms.base_name) ; inflation_parms.write_iterations = parms.write_iterations ; inflation_parms.niterations = inflate_iterations ; diff --git a/mris_thickness/mris_thickness.cpp b/mris_thickness/mris_thickness.cpp index a06683768b1..cfbc9828cd8 100644 --- a/mris_thickness/mris_thickness.cpp +++ b/mris_thickness/mris_thickness.cpp @@ -126,7 +126,10 @@ main(int argc, char *argv[]) { strcpy(sdir, cp) ; } - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi, pial_name) ; + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi, pial_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } fprintf(stderr, "reading pial surface %s...\n", fname) ; mris = MRISread(fname) ; if (!mris) @@ -237,7 +240,10 @@ main(int argc, char *argv[]) { char tmp[STRLEN] ; FileNameRemoveExtension(out_fname, tmp) ; - sprintf(fname, "%s.correspondence.init", tmp) ; + int req = snprintf(fname, STRLEN, "%s.correspondence.init", tmp) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing initial correspondences to %s\n", fname) ; MRISrestoreVertexPositions(mris, PIAL_VERTICES) ; MRIScomputeMetricProperties(mris) ; @@ -271,7 +277,10 @@ main(int argc, char *argv[]) { v->ny = v->y - v->whitey ; v->nz = v->z - v->whitez ; } - sprintf(fname, "%s.normals.init.mgz", tmp) ; + int req = snprintf(fname, STRLEN, "%s.normals.init.mgz", tmp) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing initial surface normals to %s\n", fname) ; MRISwriteNormals(mris, fname) ; MRISrestoreVertexPositions(mris, TMP_VERTICES) ; @@ -307,7 +316,10 @@ main(int argc, char *argv[]) { VERTEX *v ; FileNameRemoveExtension(out_fname, tmp) ; - sprintf(fname, "%s.normals.mgz", tmp) ; + int req = snprintf(fname, STRLEN, "%s.normals.mgz", tmp) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing final surface normals to %s\n", fname) ; MRISsaveVertexPositions(mris, TMP2_VERTICES) ; MRISrestoreVertexPositions(mris, TMP_VERTICES) ; @@ -357,12 +369,18 @@ main(int argc, char *argv[]) { break ; sscanf(line, "%s", subject) ; printf("processing longitudinal subject %s\n", subject) ; - sprintf(fname, "%s/%s.long.%s/surf/%s.%s", sdir, subject, base_name, hemi, + int req = snprintf(fname, STRLEN, "%s/%s.long.%s/surf/%s.%s", sdir, subject, base_name, hemi, white_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadWhiteCoordinates(mris, fname) != NO_ERROR) ErrorExit(ERROR_NOFILE, "%s: could not read surface file %s", Progname, fname) ; - sprintf(fname, "%s/%s.long.%s/surf/%s.%s", sdir, subject, base_name, hemi, + req = snprintf(fname, STRLEN, "%s/%s.long.%s/surf/%s.%s", sdir, subject, base_name, hemi, pial_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadPialCoordinates(mris, fname) != NO_ERROR) ErrorExit(ERROR_NOFILE, "%s: could not read surface file %s", Progname, fname) ; for (vno = 0 ; vno < mris->nvertices ; vno++) @@ -384,7 +402,10 @@ main(int argc, char *argv[]) { v->curv = thick ; v->tx = xp ; v->ty = yp ; v->tz = zp ; } FileNameOnly(out_fname, out_fname_only) ; - sprintf(fname, "%s/%s.long.%s/surf/%s", sdir, subject, base_name, out_fname_only); + req = snprintf(fname, STRLEN, "%s/%s.long.%s/surf/%s", sdir, subject, base_name, out_fname_only); + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("writing thickness estimate to %s\n", fname) ; MRISwriteCurvature(mris, fname) ; } while (strlen(line) > 0) ; diff --git a/mris_topo_fixer/mris_topo_fixer.cpp b/mris_topo_fixer/mris_topo_fixer.cpp index e21658330d5..0cf1bd364b8 100644 --- a/mris_topo_fixer/mris_topo_fixer.cpp +++ b/mris_topo_fixer/mris_topo_fixer.cpp @@ -193,7 +193,10 @@ int main(int argc, char *argv[]) { strcpy(sdir, cp) ; } - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi,orig_name) ; + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi,orig_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading input surface %s...\n", fname) ; mris = MRISreadOverAlloc(fname,pct_over) ; if (!mris) @@ -238,7 +241,10 @@ int main(int argc, char *argv[]) { /*before extracting the largest component, we will load the spherical coordinates*/ MRISsaveVertexPositions(mris,ORIGINAL_VERTICES); - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi, sphere_name) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi, sphere_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadVertexPositions(mris, (char*)sphere_name) != NO_ERROR) ErrorExit(ERROR_NOFILE, "%s: could not read original surface %s", Progname, orig_name) ; @@ -279,7 +285,10 @@ int main(int argc, char *argv[]) { } MRISsaveVertexPositions(mris,ORIGINAL_VERTICES); - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi, input_name) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi, input_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwrite(mris,fname); //number of loops @@ -296,7 +305,10 @@ int main(int argc, char *argv[]) { if (sphere) { if(did_extract_main_component==0){ //read the spherical coordinates - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi, sphere_name) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi, sphere_name) ; + if( req >= STRLEN ) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadVertexPositions(mris, (char*)sphere_name) != NO_ERROR) ErrorExit(ERROR_NOFILE, "%s: could not read original surface %s", Progname, orig_name) ; @@ -318,16 +330,29 @@ int main(int argc, char *argv[]) { // } //read the mri volume - sprintf(fname, "%s/%s/mri/%s", sdir, sname, brain_name) ; - if (MGZ) sprintf(fname, "%s.mgz", fname); + if (MGZ) { + req = snprintf(fname, STRLEN, "%s/%s/mri/%s.mgz", sdir, sname, brain_name); + } else { + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, brain_name); + } + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading brain volume from %s...\n", brain_name) ; parms.mri = MRIread(fname) ; if (!parms.mri) ErrorExit(ERROR_NOFILE, "%s: could not read brain volume from %s", Progname, fname) ; - sprintf(fname, "%s/%s/mri/%s", sdir, sname, wm_name) ; - if (MGZ) sprintf(fname, "%s.mgz", fname); + if (MGZ) { + req = snprintf(fname, STRLEN, "%s/%s/mri/%s.mgz", sdir, sname, wm_name); + } + else { + req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, sname, wm_name); + } + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } printf("reading wm segmentation from %s...\n", wm_name) ; parms.mri_wm = MRIread(fname) ; if (!parms.mri_wm) @@ -351,7 +376,10 @@ int main(int argc, char *argv[]) { } } - sprintf(fname, "%s/%s/surf/%s.defects", sdir, sname, hemi ) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.defects", sdir, sname, hemi ) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwriteCurvature(mris,fname); mris_corrected=MRISduplicateOver(mris); @@ -431,10 +459,16 @@ int main(int argc, char *argv[]) { MRISmarkOrientationChanges(mris_corrected); if (asc) { - sprintf(fname, "%s/%s/surf/%s.%s.asc", sdir, sname, hemi,out_name) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s.asc", sdir, sname, hemi,out_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwrite(mris_corrected,fname); } else { - sprintf(fname, "%s/%s/surf/%s.%s", sdir, sname, hemi,out_name) ; + req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, sname, hemi,out_name) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } MRISwrite(mris_corrected,fname); } diff --git a/mrisp_paint/mrisp_paint.cpp b/mrisp_paint/mrisp_paint.cpp index 2125562492f..089477aec4f 100644 --- a/mrisp_paint/mrisp_paint.cpp +++ b/mrisp_paint/mrisp_paint.cpp @@ -182,7 +182,10 @@ main(int argc, char *argv[]) /* reading or generating the field */ if (ReturnFieldName(field_no)) /* read in precomputed curvature file */ { - sprintf(fname, "%s/%s/surf/%s.%s", subjects_dir,subject_name,hemi,ReturnFieldName(field_no)) ; + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", subjects_dir,subject_name,hemi,ReturnFieldName(field_no)) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (MRISreadCurvatureFile(mris_var, fname) != NO_ERROR) { MRISfree(&mris_var); @@ -191,7 +194,10 @@ main(int argc, char *argv[]) } else /* compute curvature of surface */ { - sprintf(fname, "%s/%s/surf/%s.%s", subjects_dir,subject_name,hemi,surface_names[field_no]) ; + int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", subjects_dir,subject_name,hemi,surface_names[field_no]) ; + if (req >= STRLEN) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } /* if(parms->fields[n].field==0) */ /* sprintf(fname, "inflated") ; */ /* else */ diff --git a/packages/source/build_itk.sh b/packages/source/build_itk.sh index 38073208179..6ba17fc3c23 100755 --- a/packages/source/build_itk.sh +++ b/packages/source/build_itk.sh @@ -42,5 +42,5 @@ cmake ../ITK \ -DModule_AnisotropicDiffusionLBR:BOOL=ON \ -DBUILD_TESTING:BOOL=OFF -cmake --build . --target all -j8 +cmake --build . --target all -j 8 cmake --build . --target install diff --git a/packages/source/build_petsc.sh b/packages/source/build_petsc.sh index a927a4e065c..b432d284a3d 100755 --- a/packages/source/build_petsc.sh +++ b/packages/source/build_petsc.sh @@ -34,7 +34,7 @@ elif [ "$(uname -s)" == "Darwin" ]; then fi export PETSC_ARCH -make -j8 +make -j 8 # build mpich cd externalpackages/mpich2-1.0.5p4 diff --git a/packages/source/build_vtk.sh b/packages/source/build_vtk.sh index 8f4aa3f7c10..a862ed40c90 100755 --- a/packages/source/build_vtk.sh +++ b/packages/source/build_vtk.sh @@ -38,5 +38,5 @@ cmake ../VTK-7.1.1 $EXTRA_OPTIONS \ -DCMAKE_C_STANDARD:STRING=11 \ -DVTK_RENDERING_BACKEND:STRING=OpenGL -cmake --build . --target all -j8 +cmake --build . --target all -j 8 cmake --build . --target install diff --git a/talairach_afd/talairach_afd.cpp b/talairach_afd/talairach_afd.cpp index a545a39bd7d..1917bebc7d2 100644 --- a/talairach_afd/talairach_afd.cpp +++ b/talairach_afd/talairach_afd.cpp @@ -146,9 +146,18 @@ int main(int argc, char *argv[]) strcpy(fsafd, afd_dir); } - sprintf(tmf, "%s/TalairachingMean.adf", fsafd); - sprintf(cvf, "%s/TalairachingCovariance.adf", fsafd); - sprintf(probasf, "%s/TalairachingProbas.adf", fsafd); + int req = snprintf(tmf, 1000, "%s/TalairachingMean.adf", fsafd); + if (req >= 1000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } + req = snprintf(cvf, 1000, "%s/TalairachingCovariance.adf", fsafd); + if (req >= 1000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } + req = snprintf(probasf, 1000, "%s/TalairachingProbas.adf", fsafd); + if (req >= 1000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } /*----- load 1x9 mean vector computed from training set -----*/ mu = ReadMeanVect(tmf); diff --git a/tkregister2/tkregister2.cpp b/tkregister2/tkregister2.cpp index 8f0feb33bf4..78f5d2c5f26 100644 --- a/tkregister2/tkregister2.cpp +++ b/tkregister2/tkregister2.cpp @@ -562,8 +562,14 @@ int Register(ClientData clientData, exit(1); } // Load the talairach.xfm - sprintf(talxfmdir,"%s/%s/mri/transforms",subjectsdir,subjectid); - sprintf(talxfmfile,"%s/%s",talxfmdir,talxfmname); + int req = snprintf(talxfmdir, 2000, "%s/%s/mri/transforms",subjectsdir,subjectid); + if (req >= 2000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } + req = snprintf(talxfmfile, 2000, "%s/%s",talxfmdir,talxfmname); + if (req >= 2000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (!mkheaderreg) { if (!fio_DirIsWritable(talxfmdir,0)) { printf("\n"); @@ -600,11 +606,17 @@ int Register(ClientData clientData, exit(1); } // First try .mgz - sprintf(targ_vol_path,"%s/%s/mri/%s.mgz", - subjectsdir,subjectid,targ_vol_id); + int req = snprintf(targ_vol_path,1000,"%s/%s/mri/%s.mgz", + subjectsdir,subjectid,targ_vol_id); + if (req >= 1000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (! fio_FileExistsReadable(targ_vol_path)) { // Now try COR - sprintf(targ_vol_path,"%s/%s/mri/%s",subjectsdir,subjectid,targ_vol_id); + req = snprintf(targ_vol_path, 1000, "%s/%s/mri/%s",subjectsdir,subjectid,targ_vol_id); + if (req >= 1000) { + std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl; + } if (! fio_FileExistsReadable(targ_vol_path)) { printf("ERROR: could not find %s as either mgz or COR\n",targ_vol_id); printf("%s\n",targ_vol_path); diff --git a/utils/DICOMRead.cpp b/utils/DICOMRead.cpp index 56c8c82c814..ddb28679739 100644 --- a/utils/DICOMRead.cpp +++ b/utils/DICOMRead.cpp @@ -1326,7 +1326,7 @@ char *ElementValueString(DCM_ELEMENT *e, int DoBackslash) char *evstring=NULL; unsigned int n, len; std::string tmpstr; - std::string tmpstr2; + tmpstr.resize(2048); memset(&tmpstr[0], 0, 2000); diff --git a/utils/mrisurf_defect.cpp b/utils/mrisurf_defect.cpp index 38fb29335a2..178a518c981 100644 --- a/utils/mrisurf_defect.cpp +++ b/utils/mrisurf_defect.cpp @@ -15185,7 +15185,14 @@ int MRISsegmentAnnotated(MRI_SURFACE *mris, LABEL ***plabel_array, int *pnlabels /* crunch label array down to a reasonable size */ tmp = label_array; +#if GCC_VERSION > 80000 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Walloc-size-larger-than=" +#endif label_array = (LABEL **)calloc(mris->nvertices, sizeof(LABEL *)); +#if GCC_VERSION > 80000 +#pragma GCC diagnostic pop +#endif if (!label_array) ErrorExit(ERROR_NOMEMORY, "%s: MRISsegmentAnnotated could not allocate tmp storage", Progname); for (n = 0; n < nlabels; n++) { label_array[n] = tmp[n];