mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-04 18:51:17 -06:00
Added a check to prevent buffer sync buffer overflow, and expand buff… (#937)
* Added a check to prevent buffer sync buffer overflow, and expand buffer size if needed. * Removed unnecessary asserts and added sync buffer overflow check to encode template
This commit is contained in:
@@ -30,7 +30,11 @@ namespace openspace {
|
||||
template <typename T>
|
||||
void SyncBuffer::encode(const T& v) {
|
||||
const size_t size = sizeof(T);
|
||||
ghoul_assert(_encodeOffset + size < _n, "");
|
||||
|
||||
size_t anticpatedBufferSize = _encodeOffset + size;
|
||||
if (anticpatedBufferSize >= _n) {
|
||||
_dataStream.resize(anticpatedBufferSize);
|
||||
}
|
||||
|
||||
memcpy(_dataStream.data() + _encodeOffset, &v, size);
|
||||
_encodeOffset += size;
|
||||
|
||||
@@ -35,9 +35,13 @@ SyncBuffer::SyncBuffer(size_t n)
|
||||
SyncBuffer::~SyncBuffer() {} // NOLINT
|
||||
|
||||
void SyncBuffer::encode(const std::string& s) {
|
||||
ghoul_assert(_encodeOffset + sizeof(char) * s.size() + sizeof(int32_t) < _n, "");
|
||||
int32_t anticpatedBufferSize = _encodeOffset + (sizeof(char) * s.size())
|
||||
+ sizeof(int32_t);
|
||||
if (anticpatedBufferSize >= _n) {
|
||||
_dataStream.resize(anticpatedBufferSize);
|
||||
}
|
||||
|
||||
int32_t length = static_cast<int32_t>(s.length());
|
||||
int32_t length = static_cast<int32_t>(s.size() * sizeof(char));
|
||||
memcpy(
|
||||
_dataStream.data() + _encodeOffset,
|
||||
reinterpret_cast<const char*>(&length),
|
||||
|
||||
Reference in New Issue
Block a user