[cig-commits] r14360 - mc/3D/CitcomS/trunk/lib
tan2 at geodynamics.org
tan2 at geodynamics.org
Mon Mar 16 17:18:09 PDT 2009
Author: tan2
Date: 2009-03-16 17:18:09 -0700 (Mon, 16 Mar 2009)
New Revision: 14360
Modified:
mc/3D/CitcomS/trunk/lib/Full_read_input_from_files.c
mc/3D/CitcomS/trunk/lib/Full_version_dependent.c
mc/3D/CitcomS/trunk/lib/Initial_temperature.c
mc/3D/CitcomS/trunk/lib/Lith_age.c
mc/3D/CitcomS/trunk/lib/Material_properties.c
mc/3D/CitcomS/trunk/lib/Output_gzdir.c
mc/3D/CitcomS/trunk/lib/Problem_related.c
mc/3D/CitcomS/trunk/lib/Regional_read_input_from_files.c
mc/3D/CitcomS/trunk/lib/Regional_sphere_related.c
mc/3D/CitcomS/trunk/lib/Regional_version_dependent.c
Log:
Check return values of sscanf/fscanf. This fixs issue265.
Modified: mc/3D/CitcomS/trunk/lib/Full_read_input_from_files.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Full_read_input_from_files.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Full_read_input_from_files.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -232,11 +232,17 @@
VB2[i]=(float*) malloc ((nnn+1)*sizeof(float));
}
for(i=1;i<=nnn;i++) {
- fscanf(fp1,"%f %f",&(VB1[1][i]),&(VB1[2][i]));
+ if(fscanf(fp1,"%f %f",&(VB1[1][i]),&(VB1[2][i])) != 2) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
VB1[1][i] *= E->data.timedir;
VB1[2][i] *= E->data.timedir;
if (pos_age) {
- fscanf(fp2,"%f %f",&(VB2[1][i]),&(VB2[2][i]));
+ if(fscanf(fp2,"%f %f",&(VB2[1][i]),&(VB2[2][i])) != 2) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
VB2[1][i] *= E->data.timedir;
VB2[2][i] *= E->data.timedir;
}
@@ -281,9 +287,15 @@
for(i=1;i<=noy;i++)
for(j=1;j<=nox;j++) {
node=j+(i-1)*nox;
- fscanf(fp1,"%f",&inputage1);
+ if(fscanf(fp1,"%f",&inputage1) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
if (pos_age) { /* positive ages - we must interpolate */
- fscanf(fp2,"%f",&inputage2);
+ if(fscanf(fp2,"%f",&inputage2) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
E->age_t[node] = (inputage1 + (inputage2-inputage1)/(newage2-newage1)*(age-newage1))/E->data.scalet;
}
else { /* negative ages - don't do the interpolation */
@@ -319,8 +331,14 @@
}
}
for(i=1;i<=emax;i++) {
- fscanf(fp1,"%d %d %f", &nn,&(LL1[i]),&(VIP1[i]));
- fscanf(fp2,"%d %d %f", &nn,&(LL2[i]),&(VIP2[i]));
+ if(fscanf(fp1,"%d %d %f", &nn,&(LL1[i]),&(VIP1[i])) != 3) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
+ if(fscanf(fp2,"%d %d %f", &nn,&(LL2[i]),&(VIP2[i])) != 3) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
}
fclose(fp1);
@@ -366,9 +384,15 @@
TB2=(float*) malloc ((nnn+1)*sizeof(float));
for(i=1;i<=nnn;i++) {
- fscanf(fp1,"%f",&(TB1[i]));
+ if(fscanf(fp1,"%f",&(TB1[i])) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
if (pos_age) {
- fscanf(fp2,"%f",&(TB2[i]));
+ if(fscanf(fp2,"%f",&(TB2[i])) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
}
}
fclose(fp1);
Modified: mc/3D/CitcomS/trunk/lib/Full_version_dependent.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Full_version_dependent.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Full_version_dependent.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -113,7 +113,10 @@
}
fscanf(fp1,"%s %d",a,&i);
for (k=1;k<=E->mesh.noz;k++) {
- fscanf(fp1,"%d %f",&nn,&tt1);
+ if(fscanf(fp1,"%d %f",&nn,&tt1) != 2) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file);
+ exit(8);
+ }
rr[k]=tt1;
}
Modified: mc/3D/CitcomS/trunk/lib/Initial_temperature.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Initial_temperature.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Initial_temperature.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -260,8 +260,10 @@
sscanf(input_s,"%d %d",&ll,&mm);
for(i=1;i<=E->lmesh.nno;i++) {
fgets(input_s,1000,fp);
- sscanf(input_s,"%g %g %g %f",&(v1),&(v2),&(v3),&(g));
-
+ if(sscanf(input_s,"%g %g %g %f",&(v1),&(v2),&(v3),&(g)) != 4) {
+ fprintf(stderr,"Error while reading file '%s'\n", output_file);
+ exit(8);
+ }
/* Truncate the temperature to be within (0,1). */
/* This might not be desirable in some situations. */
E->T[m][i] = max(0.0,min(g,1.0));
Modified: mc/3D/CitcomS/trunk/lib/Lith_age.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Lith_age.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Lith_age.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -103,7 +103,10 @@
for(i=1;i<=gnoy;i++)
for(j=1;j<=gnox;j++) {
node=j+(i-1)*gnox;
- fscanf(fp1,"%f",&(E->age_t[node]));
+ if(fscanf(fp1,"%f",&(E->age_t[node])) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file);
+ exit(8);
+ }
E->age_t[node]=E->age_t[node]*E->data.scalet;
}
fclose(fp1);
Modified: mc/3D/CitcomS/trunk/lib/Material_properties.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Material_properties.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Material_properties.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -129,15 +129,17 @@
for(i=1; i<=E->lmesh.noz; i++) {
fgets(buffer, 255, fp);
- sscanf(buffer, "%lf %lf %lf %lf %lf %lf %lf\n",
- &(E->refstate.rho[i]),
- &(E->refstate.gravity[i]),
- &(E->refstate.thermal_expansivity[i]),
- &(E->refstate.heat_capacity[i]),
- ¬_used1,
- ¬_used2,
- ¬_used3);
-
+ if(sscanf(buffer, "%lf %lf %lf %lf %lf %lf %lf\n",
+ &(E->refstate.rho[i]),
+ &(E->refstate.gravity[i]),
+ &(E->refstate.thermal_expansivity[i]),
+ &(E->refstate.heat_capacity[i]),
+ ¬_used1,
+ ¬_used2,
+ ¬_used3) != 7) {
+ fprintf(stderr,"Error while reading file '%s'\n", E->refstate.filename);
+ exit(8);
+ }
/**** debug ****
fprintf(stderr, "%d %f %f %f %f\n",
i,
Modified: mc/3D/CitcomS/trunk/lib/Output_gzdir.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output_gzdir.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Output_gzdir.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -1224,7 +1224,8 @@
for(m=1;m <= E->sphere.caps_per_proc;m++) {
fscanf(fp,"%i %i",&ll,&mm);
for(i=1;i<=E->lmesh.nno;i++) {
- fscanf(fp,"%f %f %f %f",&v1,&v2,&v3,&g);
+ if(fscanf(fp,"%f %f %f %f",&v1,&v2,&v3,&g) != 4)
+ myerror(E,"restart velo read error 1");
/* E->sphere.cap[m].V[1][i] = v1;
E->sphere.cap[m].V[1][i] = v2;
E->sphere.cap[m].V[1][i] = v3; */
Modified: mc/3D/CitcomS/trunk/lib/Problem_related.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Problem_related.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Problem_related.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -118,7 +118,10 @@
exit(8);
}
fgets(input_s,1000,fp);
- sscanf(input_s,"%d %d %f",&ll,&mm,&E->monitor.elapsed_time);
+ if(sscanf(input_s,"%d %d %f",&ll,&mm,&E->monitor.elapsed_time) != 3) {
+ fprintf(stderr,"Error while reading file '%s'\n", output_file);
+ exit(8);
+ }
fclose(fp);
#ifdef USE_GZDIR
if(rezip)
Modified: mc/3D/CitcomS/trunk/lib/Regional_read_input_from_files.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Regional_read_input_from_files.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Regional_read_input_from_files.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -237,11 +237,17 @@
VB2[i]=(float*) malloc ((nnn+1)*sizeof(float));
}
for(i=1;i<=nnn;i++) {
- fscanf(fp1,"%f %f",&(VB1[1][i]),&(VB1[2][i]));
+ if(fscanf(fp1,"%f %f",&(VB1[1][i]),&(VB1[2][i])) != 2) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
VB1[1][i]=E->data.timedir*VB1[1][i];
VB1[2][i]=E->data.timedir*VB1[2][i];
if (pos_age) {
- fscanf(fp2,"%f %f",&(VB2[1][i]),&(VB2[2][i]));
+ if(fscanf(fp2,"%f %f",&(VB2[1][i]),&(VB2[2][i])) != 2) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
VB2[1][i]=E->data.timedir*VB2[1][i];
VB2[2][i]=E->data.timedir*VB2[2][i];
}
@@ -286,9 +292,15 @@
for(i=1;i<=noy;i++)
for(j=1;j<=nox;j++) {
node=j+(i-1)*nox;
- fscanf(fp1,"%f",&inputage1);
+ if(fscanf(fp1,"%f",&inputage1) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
if (pos_age) { /* positive ages - we must interpolate */
- fscanf(fp2,"%f",&inputage2);
+ if(fscanf(fp2,"%f",&inputage2) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
E->age_t[node] = (inputage1 + (inputage2-inputage1)/(newage2-newage1)*(age-newage1))/E->data.scalet;
}
else { /* negative ages - don't do the interpolation */
@@ -322,8 +334,14 @@
}
}
for(i=1;i<=emax;i++) {
- fscanf(fp1,"%d %d %f", &nn,&(LL1[i]),&(VIP1[i]));
- fscanf(fp2,"%d %d %f", &nn,&(LL2[i]),&(VIP2[i]));
+ if(fscanf(fp1,"%d %d %f", &nn,&(LL1[i]),&(VIP1[i])) != 3) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
+ if(fscanf(fp2,"%d %d %f", &nn,&(LL2[i]),&(VIP2[i])) != 3) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
}
fclose(fp1);
@@ -365,11 +383,17 @@
TB2=(float*) malloc ((nnn+1)*sizeof(float));
for(i=1;i<=nnn;i++) {
- fscanf(fp1,"%f",&(TB1[i]));
+ if(fscanf(fp1,"%f",&(TB1[i])) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file1);
+ exit(8);
+ }
/* if( E->parallel.me == 0)
fprintf(stderr, "\nINSIDE regional_read_input_files_for_timesteps TB1=%f %d\n",TB1[i],i); */
if (pos_age) {
- fscanf(fp2,"%f",&(TB2[i]));
+ if(fscanf(fp2,"%f",&(TB2[i])) != 1) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file2);
+ exit(8);
+ }
}
}
fclose(fp1);
Modified: mc/3D/CitcomS/trunk/lib/Regional_sphere_related.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Regional_sphere_related.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Regional_sphere_related.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -101,14 +101,20 @@
fscanf(fp,"%s %d",a,&nn);
for(i=1;i<=gnox;i++) {
- fscanf(fp,"%d %e",&nn,&theta1[E->mesh.gridmax][i]);
+ if(fscanf(fp,"%d %e",&nn,&theta1[E->mesh.gridmax][i]) != 2) {
+ fprintf(E->fp,"Error while reading coor_file '%s'\n",output_file);
+ exit(8);
+ }
}
E->control.theta_min = theta1[E->mesh.gridmax][1];
E->control.theta_max = theta1[E->mesh.gridmax][gnox];
fscanf(fp,"%s %d",a,&nn);
for(i=1;i<=gnoy;i++) {
- fscanf(fp,"%d %e",&nn,&fi1[E->mesh.gridmax][i]);
+ if(fscanf(fp,"%d %e",&nn,&fi1[E->mesh.gridmax][i]) != 2) {
+ fprintf(E->fp,"Error while reading coor_file '%s'\n",output_file);
+ exit(8);
+ }
}
E->control.fi_min = fi1[E->mesh.gridmax][1];
E->control.fi_max = fi1[E->mesh.gridmax][gnoy];
Modified: mc/3D/CitcomS/trunk/lib/Regional_version_dependent.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Regional_version_dependent.c 2009-03-17 00:17:04 UTC (rev 14359)
+++ mc/3D/CitcomS/trunk/lib/Regional_version_dependent.c 2009-03-17 00:18:09 UTC (rev 14360)
@@ -94,7 +94,10 @@
fscanf(fp1,"%s %d",a,&i);
for (k=1;k<=E->mesh.noz;k++) {
- fscanf(fp1,"%d %f",&nn,&tt1);
+ if(fscanf(fp1,"%d %f",&nn,&tt1) != 2) {
+ fprintf(stderr,"Error while reading file '%s'\n",output_file);
+ exit(8);
+ }
rr[k]=tt1;
}
E->sphere.ri = rr[1];
More information about the CIG-COMMITS
mailing list