]> granicus.if.org Git - clang/commitdiff
Fix unaligned memory access when reading INPUT_FILE_OFFSETS data
authorRaphael Isemann <teemperor@gmail.com>
Wed, 23 May 2018 09:02:40 +0000 (09:02 +0000)
committerRaphael Isemann <teemperor@gmail.com>
Wed, 23 May 2018 09:02:40 +0000 (09:02 +0000)
Summary: The blob data is unaligned, so we also should read it as such. Should fix the random failures with the sanitizer builds.

Reviewers: rsmith, v.g.vassilev

Reviewed By: v.g.vassilev

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D47247

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@333069 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Serialization/ASTReader.cpp

index 8c8b87889100ecbe0e1243f5fb234c21004aaa1f..8224236f610b635e072d89732446f1d026e76551 100644 (file)
@@ -4811,7 +4811,8 @@ bool ASTReader::readASTFileControlBlock(
 
       unsigned NumInputFiles = Record[0];
       unsigned NumUserFiles = Record[1];
-      const uint64_t *InputFileOffs = (const uint64_t *)Blob.data();
+      const llvm::support::unaligned_uint64_t *InputFileOffs =
+          (const llvm::support::unaligned_uint64_t *)Blob.data();
       for (unsigned I = 0; I != NumInputFiles; ++I) {
         // Go find this input file.
         bool isSystemFile = I >= NumUserFiles;