Changes between Initial Version and Version 2 of Ticket #183
- Timestamp:
- 08/05/08 20:37:57 (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #183
- Property Resolution → Fixed
- Property Status new → closed
-
Ticket #183 – Description
initial v2 1 The following addresses bounds-checking failures for the LAKE_SIGNELLcase.1 The following addresses bounds-checking failures for the '''LAKE_SIGNELL''' case. 2 2 3 Subroutine read_FloatsPar in ROMS/Utility/inp_par.F reads data from the floats parameter file into local, allocatable variables Fcoor, Fcount, Ftype, Ft0, Fx0, Fy0, Fz0, Fdt, Fdx, Fdy & Fdz. Data is then copied from these variables into the structure variable FLT(ng).3 Subroutine read_FloatsPar in '''ROMS/Utility/inp_par.F''' reads data from the floats parameter file into local, allocatable variables '''Fcoor''', '''Fcount''', '''Ftype''', '''Ft0''', '''Fx0''', '''Fy0''', '''Fz0''', '''Fdt''', '''Fdx''', '''Fdy''' and '''Fdz'''. Data is then copied from these variables into the structure variable '''FLT(ng).''' 4 4 5 5 The variables in question are allocated as follows (lines 7208-7218) … … 17 17 allocate ( Fdz(Npts,Ngrids) ) 18 18 }}} 19 where Nptsis equal to the maximum number of floats.19 where '''Npts''' is equal to the maximum number of floats. 20 20 21 21 In fact, the first dimension of these variables does not have to be large enough to accommodate the number of floats, but only to accommodate the number of entries in the floats data file. It is assumed, obviously, that the latter can be be greater than the former. This assumption is normally very conservative, ''except'' that it does not allow for the fact that when the entries in the floats file are read, one extra entry is always read to trigger the ERR= or END= condition in the READ statement. 22 22 23 The floats data file for the LAKE_SIGNELL test case sets NFLOATS=4and then has 4 entries sspecifying initial locations, with 1 float per entry. This cause the READ statement to be executed 5 times. If compiler bounds-checking is turned on, then the 5th time it is executed, there are out-of-bounds references to the arrays being read.23 The floats data file for the '''LAKE_SIGNELL''' test case sets '''NFLOATS=4''' and then has 4 entries sspecifying initial locations, with 1 float per entry. This cause the READ statement to be executed 5 times. If compiler bounds-checking is turned on, then the 5th time it is executed, there are out-of-bounds references to the arrays being read. 24 24 25 25 The solution is to increase the first dimension of these variables by 1: