in Sources/SPTPersistentCacheHeader.m [72:100]
int /*SPTPersistentCacheLoadingError*/ SPTPersistentCacheValidateHeader(const SPTPersistentCacheRecordHeader *header)
{
if (header == NULL) {
return SPTPersistentCacheLoadingErrorInternalInconsistency;
}
// Check that header could be read according to alignment
if (!SPTPersistentCachePointerMagicAlignCheck(header)) {
return SPTPersistentCacheLoadingErrorHeaderAlignmentMismatch;
}
// 1. Check magic
if (header->magic != SPTPersistentCacheMagicValue) {
return SPTPersistentCacheLoadingErrorMagicMismatch;
}
// 2. Check CRC
uint32_t crc = SPTPersistentCacheCalculateHeaderCRC(header);
if (crc != header->crc) {
return SPTPersistentCacheLoadingErrorInvalidHeaderCRC;
}
// 3. Check header size
if (header->headerSize != SPTPersistentCacheRecordHeaderSize) {
return SPTPersistentCacheLoadingErrorWrongHeaderSize;
}
return -1;
}