Chromium Code Reviews| 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. |