r201280 - Fix uninitialized read in vtordisp pragma code.

Reid Kleckner reid at kleckner.net
Wed Feb 12 16:44:34 PST 2014


Author: rnk
Date: Wed Feb 12 18:44:34 2014
New Revision: 201280

URL: http://llvm.org/viewvc/llvm-project?rev=201280&view=rev
Log:
Fix uninitialized read in vtordisp pragma code.

Modified:
    cfe/trunk/lib/Parse/ParsePragma.cpp

Modified: cfe/trunk/lib/Parse/ParsePragma.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParsePragma.cpp?rev=201280&r1=201279&r2=201280&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParsePragma.cpp (original)
+++ cfe/trunk/lib/Parse/ParsePragma.cpp Wed Feb 12 18:44:34 2014
@@ -958,7 +958,7 @@ void PragmaMSVtorDisp::HandlePragma(Prep
   }
 
 
-  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(Prep
   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);
 }
 





More information about the cfe-commits mailing list