forked from OSchip/llvm-project
Add version number checking to PTH files.
llvm-svn: 63047
This commit is contained in:
parent
eb8c8fbd63
commit
978b5becea
|
@ -456,6 +456,7 @@ void PTHWriter::EmitCachedSpellings() {
|
|||
void PTHWriter::GeneratePTH() {
|
||||
// Generate the prologue.
|
||||
Out << "cfe-pth";
|
||||
Emit32(PTHManager::Version);
|
||||
Offset JumpOffset = Out.tell();
|
||||
Emit32(0);
|
||||
|
||||
|
|
|
@ -522,12 +522,18 @@ PTHManager* PTHManager::Create(const std::string& file) {
|
|||
const unsigned char* BufEnd = (unsigned char*)File->getBufferEnd();
|
||||
|
||||
// Check the prologue of the file.
|
||||
if ((BufEnd - BufBeg) < (unsigned) (sizeof("cfe-pth") + 3) ||
|
||||
if ((BufEnd - BufBeg) < (unsigned) (sizeof("cfe-pth") + 3 + 4) ||
|
||||
memcmp(BufBeg, "cfe-pth", sizeof("cfe-pth") - 1) != 0)
|
||||
return 0;
|
||||
|
||||
// Compute the address of the index table at the end of the PTH file.
|
||||
// Read the PTH version.
|
||||
const unsigned char *p = BufBeg + (sizeof("cfe-pth") - 1);
|
||||
unsigned Version = ReadLE32(p);
|
||||
|
||||
if (Version != PTHManager::Version)
|
||||
return 0;
|
||||
|
||||
// Compute the address of the index table at the end of the PTH file.
|
||||
const unsigned char *EndTable = BufBeg + ReadLE32(p);
|
||||
|
||||
if (EndTable >= BufEnd)
|
||||
|
|
Loading…
Reference in New Issue