mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
Merge #14357: streams: Fix broken streams_vector_reader test. Remove unused seek(size_t).
4f4993fe2a Remove UBSan suppression (practicalswift) 958e1a307e streams: Remove unused seek(size_t) (practicalswift) Pull request description: Fix broken `streams_vector_reader` test. Remove unused `seek(size_t)`. Before this change the test `streams_vector_reader` triggered an unintended unsigned integer wraparound. It tried so seek using a negative value in `reader.seek(-6)`. Changes in this PR: * Fix broken `VectorReader::seek(size_t)` test case * Remove unused `seek(size_t)` Tree-SHA512: 6c6affd680626363eef9e496748f2f86a522325abab9d6b13161f41125cdc29ceb36c2c1509c90b8ff108d606df7629e55e094cc2b6253b05a892b81ce176b71
This commit is contained in:
parent
7bd7b9b38a
commit
aefeef25b8
@ -121,12 +121,6 @@ class CVectorWriter
|
|||||||
{
|
{
|
||||||
return nType;
|
return nType;
|
||||||
}
|
}
|
||||||
void seek(size_t nSize)
|
|
||||||
{
|
|
||||||
nPos += nSize;
|
|
||||||
if(nPos > vchData.size())
|
|
||||||
vchData.resize(nPos);
|
|
||||||
}
|
|
||||||
size_t size() const
|
size_t size() const
|
||||||
{
|
{
|
||||||
return vchData.size() - nPos;
|
return vchData.size() - nPos;
|
||||||
@ -157,9 +151,11 @@ public:
|
|||||||
* @param[in] pos Starting position. Vector index where reads should start.
|
* @param[in] pos Starting position. Vector index where reads should start.
|
||||||
*/
|
*/
|
||||||
VectorReader(int type, int version, const std::vector<unsigned char>& data, size_t pos)
|
VectorReader(int type, int version, const std::vector<unsigned char>& data, size_t pos)
|
||||||
: m_type(type), m_version(version), m_data(data)
|
: m_type(type), m_version(version), m_data(data), m_pos(pos)
|
||||||
{
|
{
|
||||||
seek(pos);
|
if (m_pos > m_data.size()) {
|
||||||
|
throw std::ios_base::failure("VectorReader(...): end of data (m_pos > m_data.size())");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -202,14 +198,6 @@ public:
|
|||||||
memcpy(dst, m_data.data() + m_pos, n);
|
memcpy(dst, m_data.data() + m_pos, n);
|
||||||
m_pos = pos_next;
|
m_pos = pos_next;
|
||||||
}
|
}
|
||||||
|
|
||||||
void seek(size_t n)
|
|
||||||
{
|
|
||||||
m_pos += n;
|
|
||||||
if (m_pos > m_data.size()) {
|
|
||||||
throw std::ios_base::failure("VectorReader::seek(): end of data");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Double ended buffer combining vector and stream-like interfaces.
|
/** Double ended buffer combining vector and stream-like interfaces.
|
||||||
|
@ -103,15 +103,15 @@ BOOST_AUTO_TEST_CASE(streams_vector_reader)
|
|||||||
BOOST_CHECK_THROW(reader >> d, std::ios_base::failure);
|
BOOST_CHECK_THROW(reader >> d, std::ios_base::failure);
|
||||||
|
|
||||||
// Read a 4 bytes as a signed int from the beginning of the buffer.
|
// Read a 4 bytes as a signed int from the beginning of the buffer.
|
||||||
reader.seek(-6);
|
VectorReader new_reader(SER_NETWORK, INIT_PROTO_VERSION, vch, 0);
|
||||||
reader >> d;
|
new_reader >> d;
|
||||||
BOOST_CHECK_EQUAL(d, 67370753); // 1,255,3,4 in little-endian base-256
|
BOOST_CHECK_EQUAL(d, 67370753); // 1,255,3,4 in little-endian base-256
|
||||||
BOOST_CHECK_EQUAL(reader.size(), 2);
|
BOOST_CHECK_EQUAL(new_reader.size(), 2);
|
||||||
BOOST_CHECK(!reader.empty());
|
BOOST_CHECK(!new_reader.empty());
|
||||||
|
|
||||||
// Reading after end of byte vector throws an error even if the reader is
|
// Reading after end of byte vector throws an error even if the reader is
|
||||||
// not totally empty.
|
// not totally empty.
|
||||||
BOOST_CHECK_THROW(reader >> d, std::ios_base::failure);
|
BOOST_CHECK_THROW(new_reader >> d, std::ios_base::failure);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(streams_vector_reader_rvalue)
|
BOOST_AUTO_TEST_CASE(streams_vector_reader_rvalue)
|
||||||
|
@ -28,7 +28,6 @@ unsigned-integer-overflow:policy/fees.cpp
|
|||||||
unsigned-integer-overflow:prevector.h
|
unsigned-integer-overflow:prevector.h
|
||||||
unsigned-integer-overflow:script/interpreter.cpp
|
unsigned-integer-overflow:script/interpreter.cpp
|
||||||
unsigned-integer-overflow:stl_bvector.h
|
unsigned-integer-overflow:stl_bvector.h
|
||||||
unsigned-integer-overflow:streams.h
|
|
||||||
unsigned-integer-overflow:txmempool.cpp
|
unsigned-integer-overflow:txmempool.cpp
|
||||||
unsigned-integer-overflow:util/strencodings.cpp
|
unsigned-integer-overflow:util/strencodings.cpp
|
||||||
unsigned-integer-overflow:validation.cpp
|
unsigned-integer-overflow:validation.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user