summaryrefslogtreecommitdiff
path: root/node/Network.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-10-02 10:06:29 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-10-02 10:06:29 -0700
commite53d208ea4ca7c6496c976be6db3383d99f993c3 (patch)
tree9dd2873eab5c593bf452768cae9e8c93af72ed28 /node/Network.cpp
parente8c5495b61ebde115ee133e8c85933191bd0cd61 (diff)
downloadinfinitytier-e53d208ea4ca7c6496c976be6db3383d99f993c3.tar.gz
infinitytier-e53d208ea4ca7c6496c976be6db3383d99f993c3.zip
Improve security posture by eliminating non-const data() accessor from Buffer.
Diffstat (limited to 'node/Network.cpp')
-rw-r--r--node/Network.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/node/Network.cpp b/node/Network.cpp
index 0dc5c8b6..b9d605f5 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -505,7 +505,7 @@ void Network::_restoreState()
}
}
- // Read most recent multicast cert dump
+ // Read most recent membership cert dump
if ((_config)&&(!_config->isPublic())&&(Utils::fileExists(mcdbPath.c_str()))) {
CertificateOfMembership com;
Mutex::Lock _l(_lock);
@@ -519,7 +519,7 @@ void Network::_restoreState()
if ((fread(magic,6,1,mcdb) == 1)&&(!memcmp("ZTMCD0",magic,6))) {
long rlen = 0;
do {
- long rlen = (long)fread(buf.data() + buf.size(),1,ZT_NETWORK_CERT_WRITE_BUF_SIZE - buf.size(),mcdb);
+ long rlen = (long)fread(const_cast<char *>(static_cast<const char *>(buf.data())) + buf.size(),1,ZT_NETWORK_CERT_WRITE_BUF_SIZE - buf.size(),mcdb);
if (rlen < 0) rlen = 0;
buf.setSize(buf.size() + (unsigned int)rlen);
unsigned int ptr = 0;
@@ -528,10 +528,7 @@ void Network::_restoreState()
if (com.issuedTo())
_membershipCertificates[com.issuedTo()] = com;
}
- if (ptr) {
- memmove(buf.data(),buf.data() + ptr,buf.size() - ptr);
- buf.setSize(buf.size() - ptr);
- }
+ buf.behead(ptr);
} while (rlen > 0);
fclose(mcdb);
} else {