You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2007/11/12 17:12:14 UTC

svn commit: r594198 - in /incubator/qpid/trunk/qpid/cpp/src/qpid/framing: Buffer.cpp Buffer.h

Author: gsim
Date: Mon Nov 12 08:12:13 2007
New Revision: 594198

URL: http://svn.apache.org/viewvc?rev=594198&view=rev
Log:
Minimal bounds checking


Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.h

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp?rev=594198&r1=594197&r2=594198&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp Mon Nov 12 08:12:13 2007
@@ -164,12 +164,14 @@
 
 void Buffer::getShortString(string& s){
     uint8_t len = getOctet();
+    checkAvailable(len);
     s.assign(data + position, len);
     position += len;
 }
 
 void Buffer::getLongString(string& s){
     uint32_t len = getLong();
+    checkAvailable(len);
     s.assign(data + position, len);
     position += len;
 }
@@ -181,6 +183,7 @@
 }
 
 void Buffer::getRawData(string& s, uint32_t len){
+    checkAvailable(len);
     s.assign(data + position, len);
     position += len;
 }
@@ -191,6 +194,7 @@
 }
 
 void Buffer::getRawData(uint8_t* s, size_t len){
+    checkAvailable(len);
     memcpy(s, data + position, len);
     position += len;
 }

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.h?rev=594198&r1=594197&r2=594198&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.h Mon Nov 12 08:12:13 2007
@@ -19,6 +19,7 @@
  *
  */
 #include "amqp_types.h"
+#include "qpid/Exception.h"
 
 #ifndef _Buffer_
 #define _Buffer_
@@ -26,6 +27,8 @@
 namespace qpid {
 namespace framing {
 
+struct OutOfBounds : qpid::Exception {};
+
 class Content;
 class FieldTable;
 
@@ -35,6 +38,8 @@
     char* data;
     uint32_t position;
     uint32_t r_position;
+
+    void checkAvailable(uint32_t count) { if (position + count > size) throw OutOfBounds(); }
 
 public: