diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 347c0649d..75827f278 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -47,14 +47,13 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR,void *tPtr,int32_t f try { // Check for trusted paths or unencrypted HELLOs (HELLO is the only packet sent in the clear) const unsigned int c = cipher(); - bool trusted = false; if (c == ZT_PROTO_CIPHER_SUITE__NO_CRYPTO_TRUSTED_PATH) { // If this is marked as a packet via a trusted path, check source address and path ID. // Obviously if no trusted paths are configured this always returns false and such // packets are dropped on the floor. const uint64_t tpid = trustedPathId(); if (RR->topology->shouldInboundPathBeTrusted(_path->address(),tpid)) { - trusted = true; + _authenticated = true; } else { RR->t->incomingPacketMessageAuthenticationFailure(tPtr,_path,packetId(),sourceAddress,hops(),"path not trusted"); return true; @@ -66,7 +65,7 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR,void *tPtr,int32_t f const SharedPtr peer(RR->topology->getPeer(tPtr,sourceAddress)); if (peer) { - if (!trusted) { + if (!_authenticated) { if (!dearmor(peer->key(), peer->aesKeys())) { RR->t->incomingPacketMessageAuthenticationFailure(tPtr,_path,packetId(),sourceAddress,hops(),"invalid MAC"); peer->recordIncomingInvalidPacket(_path); diff --git a/node/IncomingPacket.hpp b/node/IncomingPacket.hpp index 95785795a..0014ddee4 100644 --- a/node/IncomingPacket.hpp +++ b/node/IncomingPacket.hpp @@ -51,7 +51,9 @@ class IncomingPacket : public Packet public: IncomingPacket() : Packet(), - _receiveTime(0) + _receiveTime(0), + _path(), + _authenticated(false) { } @@ -67,7 +69,8 @@ public: IncomingPacket(const void *data,unsigned int len,const SharedPtr &path,int64_t now) : Packet(data,len), _receiveTime(now), - _path(path) + _path(path), + _authenticated(false) { } @@ -85,6 +88,7 @@ public: copyFrom(data,len); _receiveTime = now; _path = path; + _authenticated = false; } /** @@ -134,6 +138,7 @@ private: uint64_t _receiveTime; SharedPtr _path; + bool _authenticated; }; } // namespace ZeroTier