aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0461-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0461-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch')
-rw-r--r--patches/server/0461-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/patches/server/0461-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch b/patches/server/0461-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch
new file mode 100644
index 0000000000..be48fd5ae2
--- /dev/null
+++ b/patches/server/0461-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch
@@ -0,0 +1,27 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: mbax <[email protected]>
+Date: Mon, 17 Aug 2020 12:17:37 -0400
+Subject: [PATCH] Fix regex mistake in CB NBT int deserialization
+
+The existing regex is too open and allows for the absence of any actual
+number data, detecting an NBT entry of just the letter "i" in upper or
+lower case. This causes a single-character NBT entry to be processed as
+an integer ending in "i", passing an empty String to to Integer.parseInt,
+triggering an exception in loading the item.
+
+This commit forces numbers to be present prior to the ending "i"
+letter.
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java b/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java
+index a7f4054002bd176fccf8357e9a23de66dd9e0dc5..207e4302161b3abe2ade56c9dc9c31820010fa42 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java
+@@ -19,7 +19,7 @@ import net.minecraft.nbt.TagParser;
+ public class CraftNBTTagConfigSerializer {
+
+ private static final Pattern ARRAY = Pattern.compile("^\\[.*]");
+- private static final Pattern INTEGER = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)?i", Pattern.CASE_INSENSITIVE);
++ private static final Pattern INTEGER = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)i", Pattern.CASE_INSENSITIVE); // Paper - fix regex
+ private static final Pattern DOUBLE = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d", Pattern.CASE_INSENSITIVE);
+ private static final TagParser MOJANGSON_PARSER = new TagParser(new StringReader(""));
+