diff options
| author | Reid Kleckner <reid@kleckner.net> | 2014-02-13 00:44:34 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2014-02-13 00:44:34 +0000 |
| commit | a4b3b2d71585f5f83e2f0b121db831b2479358bd (patch) | |
| tree | 8b1c175b50d3b8f101b9b0069fd838c5c0315c48 | |
| parent | 5803c24f1f28ee5798d6b977acfcf655e44f26cf (diff) | |
| download | bcm5719-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.cpp | 6 |
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); } |

