Skip to content

Commit f0a046f

Browse files
creeper123123321Runemoro
authored andcommitted
Fix ping exploit
1 parent 215701c commit f0a046f

4 files changed

Lines changed: 45 additions & 2 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.dimdev.vanillafix.bugs;
2+
3+
public interface IPatchedSPacketPong {
4+
long getClientTime();
5+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.dimdev.vanillafix.bugs.mixins;
2+
3+
import net.minecraft.network.status.server.SPacketPong;
4+
import org.dimdev.vanillafix.bugs.IPatchedSPacketPong;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.Shadow;
7+
8+
@Mixin(SPacketPong.class)
9+
public class MixinSPacketPong implements IPatchedSPacketPong {
10+
@Shadow private long clientTime;
11+
@Override
12+
public long getClientTime() {
13+
return clientTime;
14+
}
15+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.dimdev.vanillafix.bugs.mixins.client;
2+
3+
import net.minecraft.network.status.INetHandlerStatusClient;
4+
import net.minecraft.network.status.server.SPacketPong;
5+
import org.dimdev.vanillafix.bugs.IPatchedSPacketPong;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Shadow;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
11+
12+
@Mixin(targets = "net.minecraft.client.network.ServerPinger$1")
13+
public abstract class MixinServerPinger$1 implements INetHandlerStatusClient {
14+
@Shadow private long pingSentAt;
15+
@Inject(method = "handlePong", at = @At("HEAD"), cancellable = true)
16+
public void handleHandlePong(SPacketPong packetIn, CallbackInfo ci) {
17+
if (((IPatchedSPacketPong) packetIn).getClientTime() != pingSentAt) {
18+
ci.cancel();
19+
}
20+
}
21+
}

src/main/resources/mixins.vanillafix.bugs.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@
1313
"MixinInventoryPlayer",
1414
"MixinChunk",
1515
"MixinMinecraftServer",
16-
"MixinStateImplementation"
16+
"MixinStateImplementation",
17+
"MixinSPacketPong"
1718
],
1819
"client": [
1920
"client.MixinMinecraft",
2021
"client.MixinNetHandlerPlayClient",
2122
"client.MixinEntityPlayerSP",
2223
"client.MixinIntegratedServer",
23-
"client.MixinEntityRenderer"
24+
"client.MixinEntityRenderer",
25+
"client.MixinServerPinger$1"
2426
],
2527
"injectors": {
2628
"maxShiftBy": 10

0 commit comments

Comments
 (0)