summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-02-13 00:44:34 +0000
committerReid Kleckner <reid@kleckner.net>2014-02-13 00:44:34 +0000
commita4b3b2d71585f5f83e2f0b121db831b2479358bd (patch)
tree8b1c175b50d3b8f101b9b0069fd838c5c0315c48
parent5803c24f1f28ee5798d6b977acfcf655e44f26cf (diff)
downloadbcm5719-llvm-a4b3b2d71585f5f83e2f0b121db831b2479358bd.tar.gz
bcm5719-llvm-a4b3b2d71585f5f83e2f0b121db831b2479358bd.zip
Fix uninitialized read in vtordisp pragma code.
llvm-svn: 201280
-rw-r--r--clang/lib/Parse/ParsePragma.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp
index 6d92edb1dfb..90929d69188 100644
--- a/clang/lib/Parse/ParsePragma.cpp
+++ b/clang/lib/Parse/ParsePragma.cpp
@@ -958,7 +958,7 @@ void PragmaMSVtorDisp::HandlePragma(Preprocessor &PP,
}
- uint64_t Value;
+ uint64_t Value = 0;
if (Kind == Sema::PVDK_Push || Kind == Sema::PVDK_Set) {
const IdentifierInfo *II = Tok.getIdentifierInfo();
if (II && II->isStr("off")) {
@@ -998,8 +998,8 @@ void PragmaMSVtorDisp::HandlePragma(Preprocessor &PP,
AnnotTok.startToken();
AnnotTok.setKind(tok::annot_pragma_ms_vtordisp);
AnnotTok.setLocation(VtorDispLoc);
- AnnotTok.setAnnotationValue(
- reinterpret_cast<void *>(static_cast<uintptr_t>((Kind << 16) | Value)));
+ AnnotTok.setAnnotationValue(reinterpret_cast<void *>(
+ static_cast<uintptr_t>((Kind << 16) | (Value & 0xFFFF))));
PP.EnterToken(AnnotTok);
}
OpenPOWER on IntegriCloud