[llvm] r271008 - Validate the blocksize before using it

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Fri May 27 08:57:38 PDT 2016


Author: majnemer
Date: Fri May 27 10:57:38 2016
New Revision: 271008

URL: http://llvm.org/viewvc/llvm-project?rev=271008&view=rev
Log:
Validate the blocksize before using it

The blocksize could be zero on disk causing later checks to divide by
zero.

Modified:
    llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFile.cpp

Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFile.cpp?rev=271008&r1=271007&r2=271008&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFile.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFile.cpp Fri May 27 10:57:38 2016
@@ -139,9 +139,10 @@ Error PDBFile::parseFileHeaders() {
     return make_error<RawError>(raw_error_code::corrupt_file,
                                 "MSF magic header doesn't match");
 
-  if (BufferRef.getBufferSize() % SB->BlockSize != 0)
+  // We don't support blocksizes which aren't a multiple of four bytes.
+  if (SB->BlockSize % sizeof(support::ulittle32_t) != 0)
     return make_error<RawError>(raw_error_code::corrupt_file,
-                                "File size is not a multiple of block size");
+                                "Block size is not multiple of 4.");
 
   switch (SB->BlockSize) {
   case 512: case 1024: case 2048: case 4096:
@@ -152,10 +153,9 @@ Error PDBFile::parseFileHeaders() {
                                 "Unsupported block size.");
   }
 
-  // We don't support blocksizes which aren't a multiple of four bytes.
-  if (SB->BlockSize % sizeof(support::ulittle32_t) != 0)
+  if (BufferRef.getBufferSize() % SB->BlockSize != 0)
     return make_error<RawError>(raw_error_code::corrupt_file,
-                                "Block size is not multiple of 4.");
+                                "File size is not a multiple of block size");
 
   // We don't support directories whose sizes aren't a multiple of four bytes.
   if (SB->NumDirectoryBytes % sizeof(support::ulittle32_t) != 0)




More information about the llvm-commits mailing list