You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2011/02/01 18:02:00 UTC
svn commit: r1066097 - /qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp
Author: kgiusti
Date: Tue Feb 1 17:01:59 2011
New Revision: 1066097
URL: http://svn.apache.org/viewvc?rev=1066097&view=rev
Log:
QPID-3030: prevent buffer overflow when writing sequences of bytes.
Modified:
qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp?rev=1066097&r1=1066096&r2=1066097&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp Tue Feb 1 17:01:59 2011
@@ -246,6 +246,7 @@ void Buffer::putShortString(const string
size_t slen = s.length();
if (slen <= std::numeric_limits<uint8_t>::max()) {
uint8_t len = (uint8_t) slen;
+ checkAvailable(slen + 1);
putOctet(len);
s.copy(data + position, len);
position += len;
@@ -258,6 +259,7 @@ void Buffer::putMediumString(const strin
size_t slen = s.length();
if (slen <= std::numeric_limits<uint16_t>::max()) {
uint16_t len = (uint16_t) slen;
+ checkAvailable(slen + 2);
putShort(len);
s.copy(data + position, len);
position += len;
@@ -268,6 +270,7 @@ void Buffer::putMediumString(const strin
void Buffer::putLongString(const string& s){
uint32_t len = s.length();
+ checkAvailable(len + 4);
putLong(len);
s.copy(data + position, len);
position += len;
@@ -301,6 +304,7 @@ void Buffer::getBin128(uint8_t* b){
void Buffer::putRawData(const string& s){
uint32_t len = s.length();
+ checkAvailable(len);
s.copy(data + position, len);
position += len;
}
@@ -312,6 +316,7 @@ void Buffer::getRawData(string& s, uint3
}
void Buffer::putRawData(const uint8_t* s, size_t len){
+ checkAvailable(len);
memcpy(data + position, s, len);
position += len;
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org