summaryrefslogtreecommitdiff
path: root/qpid/cpp/include
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/include')
-rw-r--r--qpid/cpp/include/qpid/framing/Buffer.h2
-rw-r--r--qpid/cpp/include/qpid/framing/FieldValue.h1
2 files changed, 2 insertions, 1 deletions
diff --git a/qpid/cpp/include/qpid/framing/Buffer.h b/qpid/cpp/include/qpid/framing/Buffer.h
index 2ccad3bd57..293d591a94 100644
--- a/qpid/cpp/include/qpid/framing/Buffer.h
+++ b/qpid/cpp/include/qpid/framing/Buffer.h
@@ -45,7 +45,7 @@ class QPID_COMMON_CLASS_EXTERN Buffer
uint32_t position;
public:
- void checkAvailable(uint32_t count) { if (position + count > size) throw OutOfBounds(); }
+ void checkAvailable(size_t count) { if (count > size - position) throw OutOfBounds(); }
QPID_COMMON_EXTERN Buffer(char* data=0, uint32_t size=0);
diff --git a/qpid/cpp/include/qpid/framing/FieldValue.h b/qpid/cpp/include/qpid/framing/FieldValue.h
index e964da495a..1adcb2fa07 100644
--- a/qpid/cpp/include/qpid/framing/FieldValue.h
+++ b/qpid/cpp/include/qpid/framing/FieldValue.h
@@ -281,6 +281,7 @@ class VariableWidthValue : public FieldValue::Data {
};
void decode(Buffer& buffer) {
uint32_t len = buffer.getUInt<lenwidth>();
+ buffer.checkAvailable(len);
octets.resize(len);
if (len > 0)
buffer.getRawData(&octets[0], len);