summaryrefslogtreecommitdiff
path: root/stream-servers/ReadBuffer.cpp
diff options
context:
space:
mode:
authorGreg Schlomoff <gregschlom@google.com>2021-10-07 10:53:28 -0700
committerGreg Schlomoff <gregschlom@google.com>2021-10-07 14:47:01 -0700
commitc947a35004b50add6d3f7387e9906a47bda91eaa (patch)
treec413b2db4f74bac83ff3d6b18c2d5223f700ca49 /stream-servers/ReadBuffer.cpp
parente29327081d9d1a2618c2f7beff06cf80ea91b3b9 (diff)
downloadvulkan-cereal-c947a35004b50add6d3f7387e9906a47bda91eaa.tar.gz
gfxstream: make sure we consistently use uint32_t instead of int32_t to read the packet size.
A negative packet size doesn't make sense, and the code currently doesn't try to handle that scenario (ie: all 4 stream decoders do `ptr += packetLen` and as such would move backwards if the length was negative. Further, on the encoder side, uint32_t is used (e.g.: http://cs/android/device/generic/goldfish-opengl/system/vulkan_enc/VkEncoder.cpp;l=122;rcl=b0df973dd65f81645707f65a12e8a196a5310ef2) Test: compiles, runs Change-Id: Iaa0ac3fe57a3c20b419ceebe80d3b8ccec4083d7
Diffstat (limited to 'stream-servers/ReadBuffer.cpp')
-rw-r--r--stream-servers/ReadBuffer.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/stream-servers/ReadBuffer.cpp b/stream-servers/ReadBuffer.cpp
index 8bc52379..a108ccae 100644
--- a/stream-servers/ReadBuffer.cpp
+++ b/stream-servers/ReadBuffer.cpp
@@ -36,21 +36,21 @@ ReadBuffer::~ReadBuffer() {
free(m_buf);
}
-void ReadBuffer::setNeededFreeTailSize(int size) {
+void ReadBuffer::setNeededFreeTailSize(size_t size) {
m_neededFreeTailSize = size;
}
-int ReadBuffer::getData(IOStream* stream, int minSize) {
+int ReadBuffer::getData(IOStream* stream, size_t minSize) {
assert(stream);
- assert(minSize > (int)m_validData);
+ assert(minSize > m_validData);
- const int minSizeToRead = minSize - m_validData;
- const int neededFreeTailThisTime =
+ const size_t minSizeToRead = minSize - m_validData;
+ const size_t neededFreeTailThisTime =
std::max(minSizeToRead,
m_neededFreeTailSize);
- int maxSizeToRead;
- const int freeTailSize = m_buf + m_size - (m_readPtr + m_validData);
+ size_t maxSizeToRead;
+ const size_t freeTailSize = m_buf + m_size - (m_readPtr + m_validData);
if (freeTailSize >= neededFreeTailThisTime) {
maxSizeToRead = freeTailSize;
} else {
@@ -63,10 +63,8 @@ int ReadBuffer::getData(IOStream* stream, int minSize) {
// Note: make sure we can fit at least two of the requested packets
// into the new buffer to minimize the reallocations and
// memmove()-ing stuff around.
- size_t new_size = std::max<size_t>(
- 2 * minSizeToRead + m_validData,
- 2 * m_size);
- if (new_size < m_size) { // overflow check
+ size_t new_size = std::max(2 * minSizeToRead + m_validData, 2 * m_size);
+ if (new_size < m_size) { // overflow check
new_size = INT_MAX;
}