From 903c1999ebf95f4756c1b8c06731b32437edaea1 Mon Sep 17 00:00:00 2001 From: Myles Date: Sat, 30 Sep 2017 21:08:05 +0100 Subject: [PATCH] Don't use casting for validation of keep alive, use hashCodes. Also disregard valid ones sent twice. --- .../Protocol1_12_1To1_12_2.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java index 8c123349..67d5eb18 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java @@ -30,9 +30,9 @@ public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { handler(new PacketHandler() { @Override public void handle(PacketWrapper packetWrapper) throws Exception { - long keepAlive = packetWrapper.read(Type.LONG); + Long keepAlive = packetWrapper.read(Type.LONG); packetWrapper.user().get(KeepAliveTracker.class).setKeepAlive(keepAlive); - packetWrapper.write(Type.VAR_INT, (int) keepAlive); + packetWrapper.write(Type.VAR_INT, keepAlive.hashCode()); } }); } @@ -46,11 +46,14 @@ public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { @Override public void handle(PacketWrapper packetWrapper) throws Exception { int keepAlive = packetWrapper.read(Type.VAR_INT); - long realKeepAlive = packetWrapper.user().get(KeepAliveTracker.class).getKeepAlive(); - if (keepAlive != (int) realKeepAlive) { + Long realKeepAlive = packetWrapper.user().get(KeepAliveTracker.class).getKeepAlive(); + if (keepAlive != realKeepAlive.hashCode()) { packetWrapper.cancel(); // Wrong data, cancel packet + return; } packetWrapper.write(Type.LONG, realKeepAlive); + // Reset KeepAliveTracker (to prevent sending same valid value in a row causing a timeout) + packetWrapper.user().get(KeepAliveTracker.class).setKeepAlive(Long.MIN_VALUE); } }); }