From ef3d40bf2a14492845eaf1b5025a2bd9cf9241ae Mon Sep 17 00:00:00 2001 From: DemonWav Date: Sat, 26 Mar 2016 21:38:36 -0500 Subject: [PATCH] Prevent possible infinite loop in BlockPosition iterator --- ...-infinite-loop-in-BlockPosition-iter.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Spigot-Server-Patches/0111-Prevent-possible-infinite-loop-in-BlockPosition-iter.patch diff --git a/Spigot-Server-Patches/0111-Prevent-possible-infinite-loop-in-BlockPosition-iter.patch b/Spigot-Server-Patches/0111-Prevent-possible-infinite-loop-in-BlockPosition-iter.patch new file mode 100644 index 0000000000..b00de7d7c7 --- /dev/null +++ b/Spigot-Server-Patches/0111-Prevent-possible-infinite-loop-in-BlockPosition-iter.patch @@ -0,0 +1,52 @@ +From 74052653db4261320e163b29c7d7e526cb0f5d99 Mon Sep 17 00:00:00 2001 +From: DemonWav +Date: Sat, 26 Mar 2016 21:36:05 -0500 +Subject: [PATCH] Prevent possible infinite loop in BlockPosition iterator + + +diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java +index 2d56f02..84e862b 100644 +--- a/src/main/java/net/minecraft/server/BlockPosition.java ++++ b/src/main/java/net/minecraft/server/BlockPosition.java +@@ -139,15 +139,17 @@ public class BlockPosition extends BaseBlockPosition { + + protected BlockPosition a() { + if (this.b == null) { +- this.b = blockposition; ++ this.b = blockposition2; // Paper - use blockposition2 instead of blockposition to prevent infinite loops + return this.b; +- } else if (this.b.equals(blockposition1)) { ++ } else if (this.b.equals(blockposition3)) { // Paper - use blockposition3 instead of blockposition1 to prevent infinite loops + return (BlockPosition) this.endOfData(); + } else { + int i = this.b.getX(); + int j = this.b.getY(); + int k = this.b.getZ(); + ++ // Paper start - use blockposition2 and blockposition3 to prevent infinite loops ++ /* + if (i < blockposition1.getX()) { + ++i; + } else if (j < blockposition1.getY()) { +@@ -158,6 +160,18 @@ public class BlockPosition extends BaseBlockPosition { + j = blockposition.getY(); + ++k; + } ++ */ ++ if (i < blockposition3.getX()) { ++ ++i; ++ } else if (j < blockposition3.getY()) { ++ i = blockposition2.getX(); ++ ++j; ++ } else if (k < blockposition3.getZ()) { ++ i = blockposition2.getX(); ++ j = blockposition2.getY(); ++ ++k; ++ } ++ // Paper end + + this.b = new BlockPosition(i, j, k); + return this.b; +-- +2.7.4 +