Skip to content

Commit 86f64c2

Browse files
authored
Merge pull request #6 from scharlton2/issue-64
changed all dimvec array sizes to 12 to avoid possible memory overwrites
2 parents 40bf586 + 6ecea37 commit 86f64c2

10 files changed

+47
-43
lines changed

iric_ftoc.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -681,23 +681,23 @@ void IRICLIBDLL FMNAME(cg_iric_read_grid_functional_real_cell_mul_f, CG_IRIC_REA
681681
}
682682

683683
void IRICLIBDLL FMNAME(cg_iric_writegridcoord1d_mul_f, CG_IRIC_WRITEGRIDCOORD1D_MUL_F) (int *fid, int *isize, double *x, int *ier) {
684-
int c_isize;
684+
cgsize_t c_isize;
685685
c_isize = (cgsize_t)(*isize);
686686
*ier = cg_iRIC_WriteGridCoord1d_Mul(*fid, c_isize, x);
687687
}
688688

689689
void IRICLIBDLL FMNAME(cg_iric_writegridcoord2d_mul_f, CG_IRIC_WRITEGRIDCOORD2D_MUL_F) (int *fid, int *isize, int *jsize, double *x, double *y, int *ier) {
690-
int c_isize;
691-
int c_jsize;
690+
cgsize_t c_isize;
691+
cgsize_t c_jsize;
692692
c_isize = (cgsize_t)(*isize);
693693
c_jsize = (cgsize_t)(*jsize);
694694
*ier = cg_iRIC_WriteGridCoord2d_Mul(*fid, c_isize, c_jsize, x, y);
695695
}
696696

697697
void IRICLIBDLL FMNAME(cg_iric_writegridcoord3d_mul_f, CG_IRIC_WRITEGRIDCOORD3D_MUL_F) (int *fid, int *isize, int *jsize, int *ksize, double *x, double *y, double *z, int *ier) {
698-
int c_isize;
699-
int c_jsize;
700-
int c_ksize;
698+
cgsize_t c_isize;
699+
cgsize_t c_jsize;
700+
cgsize_t c_ksize;
701701
c_isize = (cgsize_t)(*isize);
702702
c_jsize = (cgsize_t)(*jsize);
703703
c_ksize = (cgsize_t)(*ksize);
@@ -1235,13 +1235,13 @@ void IRICLIBDLL FMNAME(cg_iric_write_bc_functionalwithname_string_mul_f, CG_IRIC
12351235
}
12361236

12371237
void IRICLIBDLL FMNAME(cg_iric_write_sol_particle_pos2d_mul_f, CG_IRIC_WRITE_SOL_PARTICLE_POS2D_MUL_F) (int *fid, int *count, double *x, double *y, int *ier) {
1238-
int c_count;
1238+
cgsize_t c_count;
12391239
c_count = (cgsize_t)(*count);
12401240
*ier = cg_iRIC_Write_Sol_Particle_Pos2d_Mul(*fid, c_count, x, y);
12411241
}
12421242

12431243
void IRICLIBDLL FMNAME(cg_iric_write_sol_particle_pos3d_mul_f, CG_IRIC_WRITE_SOL_PARTICLE_POS3D_MUL_F) (int *fid, int *count, double *x, double *y, double *z, int *ier) {
1244-
int c_count;
1244+
cgsize_t c_count;
12451245
c_count = (cgsize_t)(*count);
12461246
*ier = cg_iRIC_Write_Sol_Particle_Pos3d_Mul(*fid, c_count, x, y, z);
12471247
}
@@ -2015,23 +2015,23 @@ void IRICLIBDLL FMNAME(cg_iric_read_grid_functional_real_cell_f, CG_IRIC_READ_GR
20152015
}
20162016

20172017
void IRICLIBDLL FMNAME(cg_iric_writegridcoord1d_f, CG_IRIC_WRITEGRIDCOORD1D_F) (int *isize, double *x, int *ier) {
2018-
int c_isize;
2018+
cgsize_t c_isize;
20192019
c_isize = (cgsize_t)(*isize);
20202020
*ier = cg_iRIC_WriteGridCoord1d(c_isize, x);
20212021
}
20222022

20232023
void IRICLIBDLL FMNAME(cg_iric_writegridcoord2d_f, CG_IRIC_WRITEGRIDCOORD2D_F) (int *isize, int *jsize, double *x, double *y, int *ier) {
2024-
int c_isize;
2025-
int c_jsize;
2024+
cgsize_t c_isize;
2025+
cgsize_t c_jsize;
20262026
c_isize = (cgsize_t)(*isize);
20272027
c_jsize = (cgsize_t)(*jsize);
20282028
*ier = cg_iRIC_WriteGridCoord2d(c_isize, c_jsize, x, y);
20292029
}
20302030

20312031
void IRICLIBDLL FMNAME(cg_iric_writegridcoord3d_f, CG_IRIC_WRITEGRIDCOORD3D_F) (int *isize, int *jsize, int *ksize, double *x, double *y, double *z, int *ier) {
2032-
int c_isize;
2033-
int c_jsize;
2034-
int c_ksize;
2032+
cgsize_t c_isize;
2033+
cgsize_t c_jsize;
2034+
cgsize_t c_ksize;
20352035
c_isize = (cgsize_t)(*isize);
20362036
c_jsize = (cgsize_t)(*jsize);
20372037
c_ksize = (cgsize_t)(*ksize);
@@ -2569,13 +2569,13 @@ void IRICLIBDLL FMNAME(cg_iric_write_bc_functionalwithname_string_f, CG_IRIC_WRI
25692569
}
25702570

25712571
void IRICLIBDLL FMNAME(cg_iric_write_sol_particle_pos2d_f, CG_IRIC_WRITE_SOL_PARTICLE_POS2D_F) (int *count, double *x, double *y, int *ier) {
2572-
int c_count;
2572+
cgsize_t c_count;
25732573
c_count = (cgsize_t)(*count);
25742574
*ier = cg_iRIC_Write_Sol_Particle_Pos2d(c_count, x, y);
25752575
}
25762576

25772577
void IRICLIBDLL FMNAME(cg_iric_write_sol_particle_pos3d_f, CG_IRIC_WRITE_SOL_PARTICLE_POS3D_F) (int *count, double *x, double *y, double *z, int *ier) {
2578-
int c_count;
2578+
cgsize_t c_count;
25792579
c_count = (cgsize_t)(*count);
25802580
*ier = cg_iRIC_Write_Sol_Particle_Pos3d(c_count, x, y, z);
25812581
}

iriclib.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,9 @@ int cg_iRIC_Read_BC_IndicesSize_Mul(int fid, const char* type, int num, cgsize_t
925925

926926
int cg_iRIC_Read_BC_Indices_Mul(int fid, const char* type, int num, cgsize_t* indices)
927927
{
928+
#if (CG_SIZEOF_SIZE != 32)
929+
#error CG_IRIC_READ_BC_INDICES_F and CG_IRIC_READ_BC_INDICES_MUL_F need to be updated!
930+
#endif
928931
GET_F(fid);
929932
return f->BC_Read_Indices(type, num, indices);
930933
}

iriclib_cgnsfile_base.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ int CgnsFile::Impl::loadResultData()
235235
char name[NAME_MAXLENGTH];
236236
DataType_t datatype;
237237
int dim;
238-
cgsize_t dimvec[2];
238+
cgsize_t dimvec[Impl::MAX_DIMS];
239239

240240
ier = cg_array_info(i, name, &datatype, &dim, dimvec);
241241
RETURN_IF_ERR;
@@ -583,9 +583,9 @@ int CgnsFile::Impl::readArray(const char* name, DataType_t dataType, cgsize_t le
583583
int index;
584584
DataType_t dt;
585585
int dim;
586-
cgsize_t dimVec[3];
586+
cgsize_t dimVec[Impl::MAX_DIMS];
587587

588-
int ier = findArray(name, &index, &dt, &dim, &(dimVec[0]));
588+
int ier = findArray(name, &index, &dt, &dim, dimVec);
589589
RETURN_IF_ERR;
590590

591591
// check datatype;
@@ -603,9 +603,9 @@ int CgnsFile::Impl::readArrayAs(const char* name, DataType_t dataType, size_t le
603603
int index;
604604
DataType_t dt;
605605
int dim;
606-
cgsize_t dimVec[3];
606+
cgsize_t dimVec[Impl::MAX_DIMS];
607607

608-
int ier = findArray(name, &index, &dt, &dim, &(dimVec[0]));
608+
int ier = findArray(name, &index, &dt, &dim, dimVec);
609609
RETURN_IF_ERR;
610610

611611
// check datalength if needed
@@ -621,9 +621,9 @@ int CgnsFile::Impl::readStringLen(const char* name, int* length)
621621
int index;
622622
DataType_t datatype;
623623
int dim;
624-
cgsize_t dimVec[3];
624+
cgsize_t dimVec[Impl::MAX_DIMS];
625625

626-
int ier = findArray(name, &index, &datatype, &dim, &(dimVec[0]));
626+
int ier = findArray(name, &index, &datatype, &dim, dimVec);
627627
RETURN_IF_ERR;
628628

629629
if (datatype != Character){return -1;}
@@ -638,9 +638,9 @@ int CgnsFile::Impl::readString(const char* name, size_t bufferLen, char* buffer)
638638
int index;
639639
DataType_t datatype;
640640
int dim;
641-
cgsize_t dimVec[3];
641+
cgsize_t dimVec[Impl::MAX_DIMS];
642642

643-
int ier = findArray(name, &index, &datatype, &dim, &(dimVec[0]));
643+
int ier = findArray(name, &index, &datatype, &dim, dimVec);
644644

645645
// check datatype
646646
if (datatype != Character){return -1;}

iriclib_cgnsfile_bc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,9 @@ int CgnsFile::BC_Read_FunctionalSize(const char *typeName, int num, const char *
106106
char arrayname[Impl::NAME_MAXLENGTH];
107107
DataType_t datatype;
108108
int dim;
109-
cgsize_t dimvec;
110-
ier = cg_array_info(i, arrayname, &datatype, &dim, &dimvec);
111-
*size = dimvec;
109+
cgsize_t dimvec[Impl::MAX_DIMS];
110+
ier = cg_array_info(i, arrayname, &datatype, &dim, dimvec);
111+
*size = dimvec[0];
112112
return 0;
113113
}
114114
return 1;

iriclib_cgnsfile_cc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ int CgnsFile::CC_Read_FunctionalSize(const char *name, cgsize_t* size)
5252
char arrayname[Impl::NAME_MAXLENGTH];
5353
DataType_t datatype;
5454
int dim;
55-
cgsize_t dimvec;
56-
ier = cg_array_info(i, arrayname, &datatype, &dim, &dimvec);
57-
*size = dimvec;
55+
cgsize_t dimvec[Impl::MAX_DIMS];
56+
ier = cg_array_info(i, arrayname, &datatype, &dim, dimvec);
57+
*size = dimvec[0];
5858
return 0;
5959
}
6060
return 1;

iriclib_cgnsfile_complex_cc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ int CgnsFile::Complex_CC_Read_FunctionalSize(const char *groupname, int num, con
5959
char arrayname[Impl::NAME_MAXLENGTH];
6060
DataType_t datatype;
6161
int dim;
62-
cgsize_t dimvec;
63-
ier = cg_array_info(i, arrayname, &datatype, &dim, &dimvec);
64-
*size = dimvec;
62+
cgsize_t dimvec[Impl::MAX_DIMS];
63+
ier = cg_array_info(i, arrayname, &datatype, &dim, dimvec);
64+
*size = dimvec[0];
6565
return 0;
6666
}
6767
return 1;

iriclib_cgnsfile_grid.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ int CgnsFile::Grid_Read_FunctionalDimensionSize(const char* name, const char* di
127127
int index;
128128
DataType_t datatype;
129129
int dim;
130-
cgsize_t dimvec[3];
131-
ier = Impl::findArray(dimArrayName, &index, &datatype, &dim, &(dimvec[0]));
130+
cgsize_t dimvec[Impl::MAX_DIMS];
131+
ier = Impl::findArray(dimArrayName, &index, &datatype, &dim, dimvec);
132132
RETURN_IF_ERR;
133133

134134
*count = dimvec[0];

private/iriclib_cgnsfile_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class CgnsFile::Impl
1313
{
1414
public:
1515
static const int NAME_MAXLENGTH = 200;
16+
static const int MAX_DIMS = 12;
1617

1718
static const int VERTEX_SOLUTION_ID = 1;
1819
static const int CELL_SOLUTION_ID = 2;

private/iriclib_cgnsfile_solutionwriterstandard.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -283,11 +283,11 @@ int CgnsFile::SolutionWriterStandard::stdSolParticleWriteReal(const char* name,
283283
char arrayname[32];
284284
DataType_t datatype;
285285
int dim;
286-
cgsize_t dimVec;
287-
ier = cg_array_info(1, arrayname, &datatype, &dim, &dimVec);
286+
cgsize_t dimVec[Impl::MAX_DIMS];
287+
ier = cg_array_info(1, arrayname, &datatype, &dim, dimVec);
288288
RETURN_IF_ERR;
289289

290-
return Impl::writeArray(name, RealDouble, static_cast<size_t> (dimVec), value);
290+
return Impl::writeArray(name, RealDouble, static_cast<size_t> (dimVec[0]), value);
291291
}
292292

293293
int CgnsFile::SolutionWriterStandard::stdSolParticleWriteInteger(const char* name, int* value, int fid, int bid, int zid, int sid)
@@ -300,9 +300,9 @@ int CgnsFile::SolutionWriterStandard::stdSolParticleWriteInteger(const char* nam
300300
char arrayname[32];
301301
DataType_t datatype;
302302
int dim;
303-
cgsize_t dimVec;
304-
ier = cg_array_info(1, arrayname, &datatype, &dim, &dimVec);
303+
cgsize_t dimVec[Impl::MAX_DIMS];
304+
ier = cg_array_info(1, arrayname, &datatype, &dim, dimVec);
305305
RETURN_IF_ERR;
306306

307-
return Impl::writeArray(name, Integer, static_cast<size_t> (dimVec), value);
307+
return Impl::writeArray(name, Integer, static_cast<size_t> (dimVec[0]), value);
308308
}

unittests_cgnsfile/case_grid.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ void case_GridWrite()
187187
int dim;
188188
char name[32];
189189
DataType_t datatype;
190-
cgsize_t dimVec[3];
190+
cgsize_t dimVec[12];
191191
ier = cg_array_info(1, name, &datatype, &dim, dimVec);
192192
VERIFY_LOG("cg_array_info() ier == 0", ier == 0);
193193
VERIFY_LOG("cg_array_info() name == CoordinateX", std::string("CoordinateX") == name);

0 commit comments

Comments
 (0)