Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions nifti2/nifti_tool.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ static const char g_version[] = "2.13";
static const char g_version_date[] = "February 27, 2022";
static int g_debug = 1;

#include <assert.h>
#include <limits.h>
#include <string.h>
#include <stdint.h>
Expand Down Expand Up @@ -3343,7 +3344,7 @@ int act_mod_hdrs( nt_opts * opts )
}

/* okay, let's actually trash the data fields */
if( modify_all_fields(nhdr, opts, g_hdr1_fields, NT_HDR1_NUM_FIELDS) )
if( modify_all_fields(nhdr, sizeof(*nhdr), opts, g_hdr1_fields, NT_HDR1_NUM_FIELDS) )
{
free(nhdr);
return 1;
Expand Down Expand Up @@ -3461,7 +3462,7 @@ int act_mod_hdr2s( nt_opts * opts )
}

/* okay, let's actually trash the data fields */
if( modify_all_fields(nhdr, opts, g_hdr2_fields, NT_HDR2_NUM_FIELDS) )
if( modify_all_fields(nhdr, sizeof(*nhdr), opts, g_hdr2_fields, NT_HDR2_NUM_FIELDS) )
{
free(nhdr);
return 1;
Expand Down Expand Up @@ -3684,7 +3685,7 @@ int act_mod_nims( nt_opts * opts )
opts->flist.len, opts->infiles.list[filec]);

/* okay, let's actually trash the data fields */
if( modify_all_fields(nim, opts, g_nim2_fields, NT_NIM_NUM_FIELDS) )
if( modify_all_fields(nim, sizeof(*nim), opts, g_nim2_fields, NT_NIM_NUM_FIELDS) )
{
nifti_image_free(nim);
return 1;
Expand Down Expand Up @@ -3787,7 +3788,7 @@ int write_hdr2_to_file( nifti_2_header * nhdr, const char * fname )
/*----------------------------------------------------------------------
* modify all fields in the list
*----------------------------------------------------------------------*/
int modify_all_fields( void * basep, nt_opts * opts, field_s * fields, int flen)
int modify_all_fields( void * basep, size_t baselen, nt_opts * opts, field_s * fields, int flen)
{
field_s * fp;
int fc, lc; /* field and list counters */
Expand Down Expand Up @@ -3817,7 +3818,7 @@ int modify_all_fields( void * basep, nt_opts * opts, field_s * fields, int flen)
return 1;
}

if( modify_field( basep, fp, opts->vlist.list[lc]) )
if( modify_field( basep, baselen, fp, opts->vlist.list[lc]) )
return 1;
}

Expand All @@ -3830,7 +3831,7 @@ int modify_all_fields( void * basep, nt_opts * opts, field_s * fields, int flen)
*
* pointer fields are not allowed here
*----------------------------------------------------------------------*/
int modify_field(void * basep, field_s * field, const char * data)
int modify_field(void * basep, size_t baselen, field_s * field, const char * data)
{
float fval;
const char * posn = data;
Expand Down Expand Up @@ -3996,6 +3997,7 @@ int modify_field(void * basep, field_s * field, const char * data)

case NT_DT_STRING:
{
assert(field->offset + field->len <= baselen);
char * dest = (char *)basep + field->offset;
nchars = dataLength;
strncpy(dest, data, field->len);
Expand Down
4 changes: 2 additions & 2 deletions nifti2/nifti_tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,8 @@ NI2_API int fill_hdr2_field_array(field_s * nh_fields);
NI2_API int fill_nim1_field_array(field_s * nim_fields);
NI2_API int fill_nim2_field_array(field_s * nim_fields);
NI2_API int fill_ana_field_array(field_s * ah_fields);
NI2_API int modify_all_fields(void *basep, nt_opts *opts, field_s *fields, int flen);
NI2_API int modify_field (void * basep, field_s * field, const char * data);
NI2_API int modify_all_fields(void *basep, size_t baseplen, nt_opts *opts, field_s *fields, int flen);
NI2_API int modify_field (void * basep, size_t baseplen, field_s * field, const char * data);
NI2_API int process_opts (int argc, const char * argv[], nt_opts * opts);
NI2_API int remove_ext_list (nifti_image * nim, const char ** elist, int len);
NI2_API int usage (const char * prog, int level);
Expand Down
12 changes: 7 additions & 5 deletions niftilib/nifti1_tool.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ static const char * g_history[] =
static const char g_version[] = "version 1.24 (September 26, 2012)";
static int g_debug = 1;

#include <assert.h>
#include <limits.h>
#include <string.h>
#include <stdint.h>
Expand Down Expand Up @@ -2591,7 +2592,7 @@ int act_mod_hdrs( nt_opts * opts )
}

/* okay, let's actually trash the data fields */
if( modify_all_fields(nhdr, opts, g_hdr_fields, NT_HDR_NUM_FIELDS) )
if( modify_all_fields(nhdr, sizeof(*nhdr), opts, g_hdr_fields, NT_HDR_NUM_FIELDS) )
{
free(nhdr);
return 1;
Expand Down Expand Up @@ -2787,7 +2788,7 @@ int act_mod_nims( nt_opts * opts )
opts->flist.len, opts->infiles.list[filec]);

/* okay, let's actually trash the data fields */
if( modify_all_fields(nim, opts, g_nim_fields, NT_NIM_NUM_FIELDS) )
if( modify_all_fields(nim, sizeof(*nim), opts, g_nim_fields, NT_NIM_NUM_FIELDS) )
{
nifti_image_free(nim);
return 1;
Expand Down Expand Up @@ -2857,7 +2858,7 @@ int write_hdr_to_file( nifti_1_header * nhdr, const char * fname )
/*----------------------------------------------------------------------
* modify all fields in the list
*----------------------------------------------------------------------*/
int modify_all_fields( void * basep, nt_opts * opts, field_s * fields, int flen)
int modify_all_fields( void * basep, size_t baselen, nt_opts * opts, field_s * fields, int flen)
{
field_s * fp;
int fc, lc; /* field and list counters */
Expand All @@ -2883,7 +2884,7 @@ int modify_all_fields( void * basep, nt_opts * opts, field_s * fields, int flen)
return 1;
}

if( modify_field( basep, fp, opts->vlist.list[lc]) )
if( modify_field( basep, baselen, fp, opts->vlist.list[lc]) )
return 1;
}

Expand All @@ -2896,7 +2897,7 @@ int modify_all_fields( void * basep, nt_opts * opts, field_s * fields, int flen)
*
* pointer fields are not allowed here
*----------------------------------------------------------------------*/
int modify_field(void * basep, field_s * field, const char * data)
int modify_field(void * basep, size_t baselen, field_s * field, const char * data)
{
float fval;
const char * posn = data;
Expand Down Expand Up @@ -3021,6 +3022,7 @@ int modify_field(void * basep, field_s * field, const char * data)

case NT_DT_STRING:
{
assert(field->offset + field->len <= baselen);
char * dest = (char *)basep + field->offset;
nchars = dataLength;
strncpy(dest, data, field->len);
Expand Down
4 changes: 2 additions & 2 deletions niftilib/nifti1_tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ int fill_field (field_s *fp, int type, int offset, int num, const char *na
int fill_hdr_field_array(field_s * nh_fields);
int fill_nim_field_array(field_s * nim_fields);
int fill_ana_field_array(field_s * ah_fields);
int modify_all_fields(void *basep, nt_opts *opts, field_s *fields, int flen);
int modify_field (void * basep, field_s * field, const char * data);
int modify_all_fields(void *basep, size_t baseplen, nt_opts *opts, field_s *fields, int flen);
int modify_field (void * basep, size_t baseplen, field_s * field, const char * data);
int process_opts (int argc, const char * argv[], nt_opts * opts);
int remove_ext_list (nifti_image * nim, const char ** elist, int len);
int usage (const char * prog, int level);
Expand Down