Skip to content

Commit ab18ecb

Browse files
committed
increased buffer sizes to read longer lines in parameter files
1 parent fdcfafd commit ab18ecb

File tree

4 files changed

+27
-12
lines changed

4 files changed

+27
-12
lines changed

src/aux-level/param-train-aux.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void free_param_train(par_train_t *train){
109109
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**/
110110
int parse_param_train(par_train_t *train){
111111
FILE *fpar = NULL;
112-
char buffer[NPOW_10] = "\0";
112+
char buffer[NPOW_16] = "\0";
113113
int i;
114114
float sum = 0.0, tol=0.01;
115115

@@ -133,7 +133,7 @@ float sum = 0.0, tol=0.01;
133133

134134

135135
// process line by line
136-
while (fgets(buffer, NPOW_10, fpar) != NULL) parse_parameter(train->params, buffer);
136+
while (fgets(buffer, NPOW_16, fpar) != NULL) parse_parameter(train->params, buffer);
137137
fclose(fpar);
138138

139139

src/cross-level/param-cl.c

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ This file contains functions for parsing parameter files
3535
+++ Return: number of values
3636
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**/
3737
int length_par(const char *buf){
38-
char buffer[NPOW_10];
38+
char buffer[NPOW_16];
3939
char *ptr = NULL;
4040
const char *separator = " =";
4141
int n = -1; // start at -1 to ignore tag
4242

4343

44-
copy_string(buffer, NPOW_10, buf);
44+
copy_string(buffer, NPOW_16, buf);
4545

4646
buffer[strcspn(buffer, "\r\n#")] = 0;
4747

@@ -52,6 +52,10 @@ int n = -1; // start at -1 to ignore tag
5252
n++;
5353
}
5454

55+
#ifdef FORCE_DEBUG
56+
printf("%d elements in parameter vector\n", n);
57+
#endif
58+
5559
return n;
5660
}
5761

@@ -778,15 +782,19 @@ void register_charvec_par(params_t *params, const char *name, int char_test, cha
778782
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**/
779783
void parse_parameter(params_t *params, const char *buf){
780784
int i, n;
781-
char buffer[NPOW_10];
785+
char buffer[NPOW_16];
782786
char *tag = NULL;
783787
char *ptr = NULL;
784788
const char *separator = " =";
785789

786790

787-
copy_string(buffer, NPOW_10, buf);
791+
copy_string(buffer, NPOW_16, buf);
788792
buffer[strcspn(buffer, "\r\n#")] = 0;
789793

794+
#ifdef FORCE_DEBUG
795+
printf("%s\n", buffer);
796+
#endif
797+
790798
ptr = strtok(buffer, separator);
791799
tag = ptr;
792800

@@ -825,6 +833,10 @@ const char *separator = " =";
825833
*params->par[i].date_ = parse_date(ptr);
826834
break;
827835
case _PAR_CHAR_:
836+
if (strlen(ptr) >= NPOW_10){
837+
printf("cannot copy parameter, string too long.\n");
838+
exit(FAILURE);
839+
}
828840
copy_string(*params->par[i].char_, NPOW_10, ptr);
829841
break;
830842
default:
@@ -838,13 +850,12 @@ const char *separator = " =";
838850
if ((*params->par[i].length = length_par(buf)) < 1) return;
839851
allocate_par(&params->par[i]);
840852

841-
copy_string(buffer, NPOW_10, buf);
853+
copy_string(buffer, NPOW_16, buf);
842854
buffer[strcspn(buffer, "\r\n#")] = 0;
843855

844856
ptr = strtok(buffer, separator);
845857
tag = ptr;
846858

847-
848859
n = 0;
849860

850861
while ((ptr = strtok(NULL, separator)) != NULL){
@@ -869,6 +880,10 @@ const char *separator = " =";
869880
params->par[i].date_vec_[0][n] = parse_date(ptr);
870881
break;
871882
case _PAR_CHAR_:
883+
if (strlen(ptr) >= NPOW_10){
884+
printf("cannot copy parameter, string too long.\n");
885+
exit(FAILURE);
886+
}
872887
copy_string(params->par[i].char_vec_[0][n], NPOW_10, ptr);
873888
break;
874889
default:

src/higher-level/param-hl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,7 +1239,7 @@ void free_param_higher(par_hl_t *phl){
12391239
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**/
12401240
int parse_param_higher(par_hl_t *phl){
12411241
FILE *fpar;
1242-
char buffer[NPOW_10] = "\0";
1242+
char buffer[NPOW_16] = "\0";
12431243
int d, w, m, q, y, tmp;
12441244
double tol = 5e-3;
12451245

@@ -1371,7 +1371,7 @@ double tol = 5e-3;
13711371

13721372

13731373
// process line by line
1374-
while (fgets(buffer, NPOW_10, fpar) != NULL) parse_parameter(phl->params, buffer);
1374+
while (fgets(buffer, NPOW_16, fpar) != NULL) parse_parameter(phl->params, buffer);
13751375
fclose(fpar);
13761376

13771377

src/lower-level/param-ll.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ void free_param_lower(par_ll_t *pl2){
155155
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**/
156156
int parse_param_lower(par_ll_t *pl2){
157157
FILE *fpar = NULL;
158-
char buffer[NPOW_10] = "\0";
158+
char buffer[NPOW_16] = "\0";
159159
char ext[NPOW_10] = "\0";
160160
char bname[NPOW_10] = "\0";
161161

@@ -200,7 +200,7 @@ char bname[NPOW_10] = "\0";
200200
register_lower(pl2->params, pl2);
201201

202202
// parse line by line
203-
while (fgets(buffer, NPOW_10, fpar) != NULL) parse_parameter(pl2->params, buffer);
203+
while (fgets(buffer, NPOW_16, fpar) != NULL) parse_parameter(pl2->params, buffer);
204204

205205
// close
206206
fclose(fpar);

0 commit comments

Comments
 (0)