diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-01-06 15:35:27 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-01-06 15:35:27 -0800 |
commit | a56fbc1929d3cb2c6c5a1b4acb3b026a1e13135d (patch) | |
tree | 55c3761b1d52f976b954a69f3a7d9a2416a3b494 | |
parent | 47ce52228b2400cdcfbd90d30b9536b013f6706a (diff) | |
download | infinitytier-a56fbc1929d3cb2c6c5a1b4acb3b026a1e13135d.tar.gz infinitytier-a56fbc1929d3cb2c6c5a1b4acb3b026a1e13135d.zip |
Close another potential anti-recursion loophole.
-rw-r--r-- | node/IncomingPacket.cpp | 1 | ||||
-rw-r--r-- | node/Peer.cpp | 1 | ||||
-rw-r--r-- | node/Switch.cpp | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 2a51a387..c71c6790 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -250,6 +250,7 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR,SharedPtr<Peer> &peer outp.append((uint64_t)pid); outp.append((unsigned char)Packet::ERROR_IDENTITY_COLLISION); outp.armor(key,true); + RR->antiRec->logOutgoingZT(outp.data(),outp.size()); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); } else { TRACE("rejected HELLO from %s(%s): packet failed authentication",id.address().toString().c_str(),_remoteAddress.toString().c_str()); diff --git a/node/Peer.cpp b/node/Peer.cpp index c00b07dc..0db3e8a0 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -199,6 +199,7 @@ void Peer::received( // 1.1.1 and newer nodes support ECHO, which is smaller -- but 1.1.0 has a bug so use HELLO there too Packet outp(_id.address(),RR->identity.address(),Packet::VERB_ECHO); outp.armor(_key,true); + RR->antiRec->logOutgoingZT(outp.data(),outp.size()); RR->node->putPacket(localAddr,remoteAddr,outp.data(),outp.size()); } else { sendHELLO(localAddr,remoteAddr,now); diff --git a/node/Switch.cpp b/node/Switch.cpp index a6575836..a9885a29 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -97,6 +97,7 @@ void Switch::onRemotePacket(const InetAddress &localAddr,const InetAddress &from _lastBeaconResponse = now; Packet outp(peer->address(),RR->identity.address(),Packet::VERB_NOP); outp.armor(peer->key(),true); + RR->antiRec->logOutgoingZT(outp.data(),outp.size()); RR->node->putPacket(localAddr,fromAddr,outp.data(),outp.size()); } } |