added an assertion to MCObjectWriter::WriteBytes to catch misuse of the ZeroFillSize...
authorNathan Jeffords <blunted2night@gmail.com>
Fri, 21 May 2010 18:23:56 +0000 (18:23 +0000)
committerNathan Jeffords <blunted2night@gmail.com>
Fri, 21 May 2010 18:23:56 +0000 (18:23 +0000)
If the size of the string is greater than the zero fill size, the function will attempt to write a very large string of zeros to the object file (~4GB on 32 bit platforms). This assertion will catch the scenario and crash the program before the write occurs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104334 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCObjectWriter.h

index 5d3493ca25c079cb9fcf5285b6d3d9212dda7b39..70535206aac7ae2e7c134818599254f1cf7f4741 100644 (file)
@@ -152,6 +152,8 @@ public:
   }
 
   void WriteBytes(StringRef Str, unsigned ZeroFillSize = 0) {
+    assert((ZeroFillSize == 0 || Str.size () <= ZeroFillSize) &&
+      "data size greater than fill size, unexpected large write will occur");
     OS << Str;
     if (ZeroFillSize)
       WriteZeros(ZeroFillSize - Str.size());