From 22a6e4679a8b0bfaceb6fdfddf23a8838386ec8c Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 20 May 2014 16:19:14 -0700 Subject: [PATCH] properly discard piggy back packets that don't match expected version --- interface/src/voxels/VoxelPacketProcessor.cpp | 17 +++++++++++++++++ libraries/networking/src/PacketHeaders.h | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/interface/src/voxels/VoxelPacketProcessor.cpp b/interface/src/voxels/VoxelPacketProcessor.cpp index 8576f14b16..aedf9e6b41 100644 --- a/interface/src/voxels/VoxelPacketProcessor.cpp +++ b/interface/src/voxels/VoxelPacketProcessor.cpp @@ -61,6 +61,23 @@ void VoxelPacketProcessor::processPacket(const SharedNodePointer& sendingNode, c } // fall through to piggyback message voxelPacketType = packetTypeForPacket(mutablePacket); + PacketVersion packetVersion = mutablePacket[1]; + PacketVersion expectedVersion = versionForPacketType(voxelPacketType); + + // check version of piggyback packet against expected version + if (packetVersion != expectedVersion) { + static QMultiMap versionDebugSuppressMap; + + QUuid senderUUID = uuidFromPacketHeader(packet); + if (!versionDebugSuppressMap.contains(senderUUID, voxelPacketType)) { + qDebug() << "Packet version mismatch on" << voxelPacketType << "- Sender" + << senderUUID << "sent" << (int)packetVersion << "but" + << (int)expectedVersion << "expected."; + + versionDebugSuppressMap.insert(senderUUID, voxelPacketType); + } + } + if (Menu::getInstance()->isOptionChecked(MenuOption::Voxels)) { app->trackIncomingVoxelPacket(mutablePacket, sendingNode, wasStatsPacket); diff --git a/libraries/networking/src/PacketHeaders.h b/libraries/networking/src/PacketHeaders.h index d5b1e8301c..9c764f9f02 100644 --- a/libraries/networking/src/PacketHeaders.h +++ b/libraries/networking/src/PacketHeaders.h @@ -47,7 +47,7 @@ enum PacketType { PacketTypeVoxelSet, PacketTypeVoxelSetDestructive, PacketTypeVoxelErase, - PacketTypeOctreeStats, + PacketTypeOctreeStats, // 26 PacketTypeJurisdiction, PacketTypeJurisdictionRequest, PacketTypeParticleQuery, @@ -62,7 +62,7 @@ enum PacketType { PacketTypeDomainServerRequireDTLS, PacketTypeNodeJsonStats, PacketTypeModelQuery, - PacketTypeModelData, + PacketTypeModelData, // 41 PacketTypeModelAddOrEdit, PacketTypeModelErase, PacketTypeModelAddResponse,