Changeset 3569


Ignore:
Timestamp:
Mar 25, 2013, 12:21:17 AM (12 years ago)
Author:
ldelgass
Message:

Check for zero dimensions/spacing in VTK files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/nanovis/VtkReader.cpp

    r3558 r3569  
    224224                }
    225225            } else if (sscanf(start, "DIMENSIONS %d %d %d", &nx, &ny, &nz) == 3) {
     226                if (nx <= 0 || ny <= 0 || nz <= 0) {
     227                    result.error("Found non-positive dimensions");
     228                    return NULL;
     229                }
    226230                // found dimensions
    227231            } else if (sscanf(start, "ORIGIN %lg %lg %lg", &x0, &y0, &z0) == 3) {
    228232                // found origin
    229233            } else if (sscanf(start, "SPACING %lg %lg %lg", &dx, &dy, &dz) == 3) {
     234                if ((nx > 1 && dx == 0.0) || (ny > 1 && dy == 0.0) || (nz > 1 && dz == 0.0)) {
     235                    result.error("Found zero spacing for dimension");
     236                    return NULL;
     237                }
    230238                // found cell spacing
    231239            } else if (sscanf(start, "POINT_DATA %d", &npts) == 1) {
    232                 if (npts != nx * ny * nz) {
     240                if (npts < 1 || npts != nx * ny * nz) {
    233241                    result.addError("Error in data stream: unexpected number of point data: %d", npts);
    234242                    return NULL;
     
    321329    }
    322330
    323     if (isRect < 0 || numRead != npts) {
     331    if (isRect < 0 || numRead != npts || npts < 1) {
    324332        deleteFieldData(fieldData, ftype);
    325333        result.error("Error in data stream");
Note: See TracChangeset for help on using the changeset viewer.