[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