From 72a250c24d7b291fde68b0039eb75a031afedb0d Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <ohearnku@msu.edu> Date: Fri, 18 Jan 2019 10:32:28 -0500 Subject: [PATCH] PuReMD-old: protect against buffer overflows for traj_title. NOTE: strcpy IS NOT SAFE, DO NOT USE EVER. USE strncpy INSTEAD. --- PuReMD/src/control.c | 11 ++++------- PuReMD/src/reax_types.h | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/PuReMD/src/control.c b/PuReMD/src/control.c index afc4bd49..d6fcfc80 100644 --- a/PuReMD/src/control.c +++ b/PuReMD/src/control.c @@ -41,7 +41,7 @@ char Read_Control_File( char *control_file, control_params* control, fp = sfopen( control_file, "r", "Read_Control_File::fp" ); /* assign default values */ - strcpy( control->sim_name, "default.sim" ); + strncpy( control->sim_name, "default.sim", REAX_MAX_STR ); control->ensemble = NVE; control->nsteps = 100; control->dt = 0.25; @@ -105,7 +105,7 @@ char Read_Control_File( char *control_file, control_params* control, out_control->write_steps = 0; out_control->traj_compress = 0; out_control->traj_method = REG_TRAJ; - strcpy( out_control->traj_title, "default_title" ); + strncpy( out_control->traj_title, "default_title", REAX_MAX_STR ); out_control->atom_info = 0; out_control->bond_info = 1; out_control->angle_info = 1; @@ -134,7 +134,7 @@ char Read_Control_File( char *control_file, control_params* control, { if ( strcmp(tmp[0], "simulation_name") == 0 ) { - strcpy( control->sim_name, tmp[1] ); + strncpy( control->sim_name, tmp[1], REAX_MAX_STR ); } else if ( strcmp(tmp[0], "ensemble_type") == 0 ) { @@ -183,9 +183,6 @@ char Read_Control_File( char *control_file, control_params* control, // ival = atoi(tmp[1]); // control->restart = ival; //} - //else if( strcmp(tmp[0], "restart_from") == 0 ) { - // strcpy( control->restart_from, tmp[1] ); - //} else if ( strcmp(tmp[0], "random_vel") == 0 ) { ival = atoi(tmp[1]); @@ -466,7 +463,7 @@ char Read_Control_File( char *control_file, control_params* control, } else if ( strcmp(tmp[0], "traj_title") == 0 ) { - strcpy( out_control->traj_title, tmp[1] ); + strncpy( out_control->traj_title, tmp[1], REAX_MAX_STR ); } else if ( strcmp(tmp[0], "atom_info") == 0 ) { diff --git a/PuReMD/src/reax_types.h b/PuReMD/src/reax_types.h index d93ec5c2..a59dfda1 100644 --- a/PuReMD/src/reax_types.h +++ b/PuReMD/src/reax_types.h @@ -1180,7 +1180,7 @@ typedef struct int write_steps; int traj_compress; int traj_method; - char traj_title[81]; + char traj_title[REAX_MAX_STR]; int atom_info; int bond_info; int angle_info; -- GitLab