[svn] commit: r42 - /experiments/jinmei-messageapi/dnsmessage.hh

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Sep 30 23:45:58 UTC 2009


Author: jinmei
Date: Wed Sep 30 23:45:57 2009
New Revision: 42

Log:
use resize instead of assign for MessageRendererToBuffer.reserve().

Modified:
    experiments/jinmei-messageapi/dnsmessage.hh

Modified: experiments/jinmei-messageapi/dnsmessage.hh
==============================================================================
--- experiments/jinmei-messageapi/dnsmessage.hh (original)
+++ experiments/jinmei-messageapi/dnsmessage.hh Wed Sep 30 23:45:57 2009
@@ -56,7 +56,6 @@
 public:
     virtual void reserve(size_t len) = 0;
     virtual void write_data(const char *cp, size_t len) = 0;
-    virtual void write_data_at(const char *cp, size_t len, size_t pos) = 0;
     virtual void write_uint32(uint32_t data) = 0;
     virtual void write_uint16(uint16_t data) = 0;
     virtual void write_uint16_at(uint16_t data, size_t pos) = 0;
@@ -68,12 +67,10 @@
 public:
     void reserve(size_t len) // XXX: API and implementation should be revisited
     {
-        _buf.assign(len, 0);
+        _buf.resize(len);
     }
     void write_data(const char *cp, size_t len)
     { _buf.insert(_buf.end(), cp, cp + len); }
-    void write_data_at(const char *cp, size_t len, size_t pos)
-    { copy(cp, cp + len, _buf.begin() + pos); }
     void write_uint32(uint32_t data)
     {
         data = htonl(data);
@@ -88,6 +85,9 @@
     }
     void write_uint16_at(uint16_t data, size_t pos)
     {
+        if (pos + sizeof(data) >= _buf.size())
+            throw DNSInvalidRendererPosition();
+
         data = htons(data);
         uint8_t* cp =  reinterpret_cast<uint8_t*>(&data);
         copy(cp, cp + sizeof(uint16_t), _buf.begin() + pos);




More information about the bind10-changes mailing list