CDFstatus ValidateCDR (vFILE *fp, OFF_T offset, Logical debug) { Int32 actualEncoding; /* char copyRight[CDF_COPYRIGHT_LEN+1]; */ int i; CDFstatus status; if (debug) #if defined(win32) printf(" Checking CDR...@%I64d\n", offset); #else printf(" Checking CDR...@%lld\n", offset); #endif status = ReadCDR64 (fp, offset, CDR_RECORD, &CDR, NULL, CDR_NULL); if (status != CDF_OK) return status; if (CDR.RecordType != CDR_) return QuitCDF ("CDF: record type is invalid ", 4, 1, &(CDR.RecordType), 0, debug); if (CDR.RecordSize < CDR_BASE_SIZE64 || CDR.RecordSize > CDR_MAX_SIZE64) return QuitCDF ("CDF: record size is invalid ", 8, 1, &(CDR.RecordSize), 0, debug); if (CDR.GDRoffset < 1) return QuitCDF ("CDF: offset to GDR is invalid ", 8, 1, &(CDR.GDRoffset), 0, debug); if (CDR.Version != 3) return QuitCDF ("CDF: version number is invalid ", 4, 1, &(CDR.Version), 0, debug); if (!ValidEncoding(CDR.Encoding,&actualEncoding)) return QuitCDF ("CDF: encoding is invalid ", 4, 1, &(CDR.Encoding), 0, debug); /* for (i = 0; i < strlen(copyRight); ++i) if (!Printable(copyRight[i])) return QuitCDF ("CDF: copyright is invalid ", 0, 1, copyRight, 0, debug); */ return CDF_OK; }
static CDFstatus ValidateCDR (vFILE *fp, OFF_T offset, Logical debug) { Int32 actualEncoding; int i; CDFstatus status; if (debug) #if defined(win32) || defined(__MINGW32__) printf(" Checking CDR...@%I64d\n", offset); #else printf(" Checking CDR...@%lld\n", offset); #endif status = ReadCDR64 (fp, offset, CDR_RECORD, &CDR, NULL, CDR_NULL); if (status != CDF_OK) return status; if (CDR.RecordType != CDR_) return QuitCDF ("CDF: record type is invalid ", offset, 4, 1, &(CDR.RecordType), 0, debug); if (CDR.RecordSize < CDR_BASE_SIZE64 || CDR.RecordSize > CDR_MAX_SIZE64) return QuitCDF ("CDF: record size is invalid ", offset, 8, 1, &(CDR.RecordSize), 0, debug); if (CDR.GDRoffset < 1) return QuitCDF ("CDF: offset to GDR is invalid ", offset, 8, 1, &(CDR.GDRoffset), 0, debug); if (CDR.Version != 3) return QuitCDF ("CDF: version number is invalid ", offset, 4, 1, &(CDR.Version), 0, debug); if (CDR.Release < 0) return QuitCDF ("CDF: release number is invalid ", offset, 4, 1, &(CDR.Release), 0, debug); if (CDR.Increment < 0) return QuitCDF ("CDF: increment number is invalid ", offset, 4, 1, &(CDR.Increment), 0, debug); if (!ValidEncoding(CDR.Encoding,&actualEncoding)) return QuitCDF ("CDF: encoding is invalid ", offset, 4, 1, &(CDR.Encoding), 0, debug); return CDF_OK; }