From: Reid Kleckner Date: Thu, 13 Feb 2014 00:44:34 +0000 (+0000) Subject: Fix uninitialized read in vtordisp pragma code. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=26c70bc947487298bfb6a2bc8b05eee2398f1743;p=clang Fix uninitialized read in vtordisp pragma code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201280 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Parse/ParsePragma.cpp b/lib/Parse/ParsePragma.cpp index 6d92edb1df..90929d6918 100644 --- a/lib/Parse/ParsePragma.cpp +++ b/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(static_cast((Kind << 16) | Value))); + AnnotTok.setAnnotationValue(reinterpret_cast( + static_cast((Kind << 16) | (Value & 0xFFFF)))); PP.EnterToken(AnnotTok); }