Skip to content

Commit 0c2430b

Browse files
committed
add checks of variables before use with calloc()
1 parent 2372c33 commit 0c2430b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

c/xdifile.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ XDI_readfile(char *filename, XDIFile *xdifile) {
241241
}
242242
}
243243
nheader = i+1;
244+
if (nheader < 1) {nheader = 1;}
244245
xdifile->meta_families = calloc(nheader, sizeof(char *));
245246
xdifile->meta_keywords = calloc(nheader, sizeof(char *));
246247
xdifile->meta_values = calloc(nheader, sizeof(char *));
@@ -410,6 +411,7 @@ XDI_readfile(char *filename, XDIFile *xdifile) {
410411
npts_ = ilen - nheader + 1;
411412

412413
nouter = npts_ - 1;
414+
if (nouter < 1) {nouter = 1;}
413415
outer_arr = calloc(nouter, sizeof(double));
414416
outer_pts = calloc(nouter, sizeof(long));
415417
outer_arr[0] = outer_arr0;
@@ -422,7 +424,7 @@ XDI_readfile(char *filename, XDIFile *xdifile) {
422424
COPY_STRING(xdifile->filename, filename);
423425

424426
maxcol++;
425-
427+
if (ncols < 1) {ncols = 1;}
426428
xdifile->array_labels = calloc(ncols, sizeof(char *));
427429
xdifile->array_units = calloc(ncols, sizeof(char *));
428430
has_energy = 0;
@@ -446,6 +448,7 @@ XDI_readfile(char *filename, XDIFile *xdifile) {
446448

447449
/* set size of data arrays */
448450
xdifile->array = calloc(ncols, sizeof(double *));
451+
if (npts_ < 0) {npts_ = 0;}
449452
for (j = 0; j < ncols; j++) {
450453
xdifile->array[j] = calloc(npts_+1, sizeof(double));
451454
if (0 != xdi_strtod(words[j], &dval)) {
@@ -546,6 +549,7 @@ XDI_readfile(char *filename, XDIFile *xdifile) {
546549
xdifile->narrays = ncols;
547550
xdifile->narray_labels = min(ncols, maxcol);
548551
xdifile->nmetadata = ndict+1;
552+
if (iouter < 1) {iouter = 1;}
549553
xdifile->outer_array = calloc(iouter, sizeof(double));
550554
xdifile->outer_breakpts = calloc(iouter, sizeof(long));
551555
for (j= 0; j < iouter; j++) {

0 commit comments

Comments
 (0)