OSDN Git Service

Don't let the readArray size calculation overflow
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 29 May 2016 06:18:01 +0000 (06:18 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 29 May 2016 06:18:01 +0000 (06:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271170 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo/CodeView/StreamReader.h

index adc23ca..9b58488 100644 (file)
@@ -60,6 +60,8 @@ public:
       return Error::success();
     }
     uint32_t Length = NumItems * sizeof(T);
+    if (Length / sizeof(T) != NumItems)
+      return make_error<CodeViewError>(cv_error_code::corrupt_record);
     if (Offset + Length > Stream.getLength())
       return make_error<CodeViewError>(cv_error_code::insufficient_buffer);
     StreamRef View(Stream, Offset, Length);