зеркало из https://github.com/microsoft/clang-1.git
Add version number checking to PTH files.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63047 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
e1b6498c41
Коммит
67d15050bb
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче