Permalink
Browse files

Fix some empty vector references

streams.h has some methods that can be tricked into dereferencing
null pointers or end() iterators. Fix this.

Github-Pull: #10250
Rebased-From: f478d98
  • Loading branch information...
1 parent a40d69e commit e23cef0c9469cc360e603a614bb3f0b22c6656bf @sipa sipa committed with luke-jr Apr 13, 2017
Showing with 6 additions and 2 deletions.
  1. +6 −2 src/streams.h
View
@@ -248,7 +248,8 @@ class CDataStream
void insert(iterator it, std::vector<char>::const_iterator first, std::vector<char>::const_iterator last)
{
- assert(last - first >= 0);
+ if (last == first) return;
+ assert(last - first > 0);
if (it == vch.begin() + nReadPos && (unsigned int)(last - first) <= nReadPos)
{
// special case for inserting at the front when there's room
@@ -261,7 +262,8 @@ class CDataStream
void insert(iterator it, const char* first, const char* last)
{
- assert(last - first >= 0);
+ if (last == first) return;
+ assert(last - first > 0);
if (it == vch.begin() + nReadPos && (unsigned int)(last - first) <= nReadPos)
{
// special case for inserting at the front when there's room
@@ -339,6 +341,8 @@ class CDataStream
void read(char* pch, size_t nSize)
{
+ if (nSize == 0) return;
+
// Read from the beginning of the buffer
unsigned int nReadPosNext = nReadPos + nSize;
if (nReadPosNext >= vch.size())

0 comments on commit e23cef0

Please sign in to comment.