wal: fix crc mismatch crash bug

This commit is contained in:
tangcong 2020-05-20 12:35:25 +08:00 committed by Gyuho Lee
parent 669285f515
commit 8ce10ea4a5

View File

@ -456,6 +456,14 @@ func ValidSnapshotEntries(walDir string) ([]walpb.Snapshot, error) {
snaps = append(snaps, loadedSnap)
case stateType:
state = mustUnmarshalState(rec.Data)
case crcType:
crc := decoder.crc.Sum32()
// current crc of decoder must match the crc of the record.
// do no need to match 0 crc, since the decoder is a new one at this case.
if crc != 0 && rec.Validate(crc) != nil {
return nil, ErrCRCMismatch
}
decoder.updateCRC(rec.Crc)
}
}
// We do not have to read out all the WAL entries