diff options
author | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-14 00:38:41 +0000 |
---|---|---|
committer | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-14 00:38:41 +0000 |
commit | 4bd0224887a8de1434186cad2f618c18dea06c0b (patch) | |
tree | 0672bcc76b8b74756d6221b2a6e37ee587f22da1 /include | |
parent | 131a764e0e7abc90b322fd568e042d3c5a0633af (diff) | |
download | llvm-4bd0224887a8de1434186cad2f618c18dea06c0b.tar.gz llvm-4bd0224887a8de1434186cad2f618c18dea06c0b.tar.bz2 llvm-4bd0224887a8de1434186cad2f618c18dea06c0b.tar.xz |
llvm-cov: Slightly improved error checking.
- readInt() should check all 4 bytes can be read, not just 1.
- In the event of false data in the gcno file, it was possible to index
into a non-existent index of SmallVector, causing assertion error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194639 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Support/GCOV.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/llvm/Support/GCOV.h b/include/llvm/Support/GCOV.h index 469a9e3ef9..0aa716aac0 100644 --- a/include/llvm/Support/GCOV.h +++ b/include/llvm/Support/GCOV.h @@ -152,11 +152,11 @@ public: } bool readInt(uint32_t &Val) { - StringRef Str = Buffer->getBuffer().slice(Cursor, Cursor+4); - if (Str.empty()) { + if (Buffer->getBuffer().size() < Cursor+4) { errs() << "Unexpected end of memory buffer: " << Cursor+4 << ".\n"; return false; } + StringRef Str = Buffer->getBuffer().slice(Cursor, Cursor+4); Cursor += 4; Val = *(const uint32_t *)(Str.data()); return true; |