From 147425483a9e1afa2a2a4d9c0d5fa8b68d105644 Mon Sep 17 00:00:00 2001
From: nerzhul <loic.blot@unix-experience.fr>
Date: Tue, 23 Feb 2016 10:58:13 +0100
Subject: [PATCH] GOTBLOCKS & DELETEBLOCKS: test packet size only once

---
 src/network/serverpackethandler.cpp | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp
index 7e348a94d..ef99a634f 100644
--- a/src/network/serverpackethandler.cpp
+++ b/src/network/serverpackethandler.cpp
@@ -762,14 +762,14 @@ void Server::handleCommand_GotBlocks(NetworkPacket* pkt)
 
 	RemoteClient *client = getClient(pkt->getPeerId());
 
-	for (u16 i = 0; i < count; i++) {
-		if ((s16)pkt->getSize() < 1 + (i + 1) * 6)
-			throw con::InvalidIncomingDataException
+	if ((s16)pkt->getSize() < 1 + (int)count * 6) {
+		throw con::InvalidIncomingDataException
 				("GOTBLOCKS length is too short");
-		v3s16 p;
+	}
 
+	for (u16 i = 0; i < count; i++) {
+		v3s16 p;
 		*pkt >> p;
-
 		client->GotBlock(p);
 	}
 }
@@ -865,13 +865,14 @@ void Server::handleCommand_DeletedBlocks(NetworkPacket* pkt)
 
 	RemoteClient *client = getClient(pkt->getPeerId());
 
-	for (u16 i = 0; i < count; i++) {
-		if ((s16)pkt->getSize() < 1 + (i + 1) * 6)
-			throw con::InvalidIncomingDataException
+	if ((s16)pkt->getSize() < 1 + (int)count * 6) {
+		throw con::InvalidIncomingDataException
 				("DELETEDBLOCKS length is too short");
+	}
+
+	for (u16 i = 0; i < count; i++) {
 		v3s16 p;
 		*pkt >> p;
-
 		client->SetBlockNotSent(p);
 	}
 }
-- 
GitLab