Index: lib/Bitcode/NaCl/Analysis/NaClCompress.cpp |
diff --git a/lib/Bitcode/NaCl/Analysis/NaClCompress.cpp b/lib/Bitcode/NaCl/Analysis/NaClCompress.cpp |
index d4c327f6b189c8951c6ca8234b12165ca9b6a0f4..bb6e6c51eebbed0a042cfeff160862adaf966194 100644 |
--- a/lib/Bitcode/NaCl/Analysis/NaClCompress.cpp |
+++ b/lib/Bitcode/NaCl/Analysis/NaClCompress.cpp |
@@ -1158,14 +1158,15 @@ static bool analyzeBitcode( |
const unsigned char *BufPtr = (const unsigned char *)MemBuf->getBufferStart(); |
const unsigned char *EndBufPtr = BufPtr+MemBuf->getBufferSize(); |
+ const unsigned char *HeaderPtr = BufPtr; |
// First read header and verify it is good. |
NaClBitcodeHeader Header; |
- if (Header.Read(BufPtr, EndBufPtr) || !Header.IsSupported()) |
+ if (Header.Read(HeaderPtr, EndBufPtr) || !Header.IsSupported()) |
jvoung (off chromium)
2015/05/07 18:11:17
Should this check of Read vs IsSupported be split
Karl
2015/05/07 22:18:54
Good point. Changing.
|
return Error("Invalid PNaCl bitcode header"); |
// Create a bitstream reader to read the bitcode file. |
- NaClBitstreamReader StreamFile(BufPtr, EndBufPtr); |
+ NaClBitstreamReader StreamFile(BufPtr, EndBufPtr, Header); |
NaClBitstreamCursor Stream(StreamFile); |
// Parse the the bitcode file. |
@@ -1381,15 +1382,16 @@ static bool chooseAbbrevs(MemoryBuffer *MemBuf, BlockAbbrevsMapType &AbbrevsMap, |
BlockAbbrevsQueueMap &AbbrevsQueueMap) { |
const unsigned char *BufPtr = (const unsigned char *)MemBuf->getBufferStart(); |
const unsigned char *EndBufPtr = BufPtr + MemBuf->getBufferSize(); |
+ const unsigned char *HeaderPtr = BufPtr; |
// Read header. No verification is needed since AnalyzeBitcode has |
// already checked it. |
NaClBitcodeHeader Header; |
- if (Header.Read(BufPtr, EndBufPtr)) |
+ if (Header.Read(HeaderPtr, EndBufPtr)) |
return Error("Invalid PNaCl bitcode header"); |
// Create the bitcode reader. |
- NaClBitstreamReader StreamFile(BufPtr, EndBufPtr); |
+ NaClBitstreamReader StreamFile(BufPtr, EndBufPtr, Header); |
NaClBitstreamCursor Stream(StreamFile); |
// Set up the parser. |
@@ -1579,15 +1581,16 @@ static bool copyBitcode(const NaClBitcodeCompressor::CompressFlags &Flags, |
const unsigned char *BufPtr = (const unsigned char *)MemBuf->getBufferStart(); |
const unsigned char *EndBufPtr = BufPtr + MemBuf->getBufferSize(); |
+ const unsigned char *HeaderPtr = BufPtr; |
// Read header. No verification is needed since AnalyzeBitcode has |
// already checked it. |
NaClBitcodeHeader Header; |
- if (Header.Read(BufPtr, EndBufPtr)) |
+ if (Header.Read(HeaderPtr, EndBufPtr)) |
return Error("Invalid PNaCl bitcode header"); |
// Create the bitcode reader. |
- NaClBitstreamReader StreamFile(BufPtr, EndBufPtr); |
+ NaClBitstreamReader StreamFile(BufPtr, EndBufPtr, Header); |
NaClBitstreamCursor Stream(StreamFile); |
// Create the bitcode writer. |