aboutsummaryrefslogtreecommitdiffhomepage
path: root/paper-server/patches/unapplied/net/minecraft/resources/ResourceLocation.java.patch
diff options
context:
space:
mode:
Diffstat (limited to 'paper-server/patches/unapplied/net/minecraft/resources/ResourceLocation.java.patch')
-rw-r--r--paper-server/patches/unapplied/net/minecraft/resources/ResourceLocation.java.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/paper-server/patches/unapplied/net/minecraft/resources/ResourceLocation.java.patch b/paper-server/patches/unapplied/net/minecraft/resources/ResourceLocation.java.patch
new file mode 100644
index 0000000000..4f2bd280fb
--- /dev/null
+++ b/paper-server/patches/unapplied/net/minecraft/resources/ResourceLocation.java.patch
@@ -0,0 +1,42 @@
+--- a/net/minecraft/resources/ResourceLocation.java
++++ b/net/minecraft/resources/ResourceLocation.java
+@@ -32,6 +32,7 @@
+ public static final char NAMESPACE_SEPARATOR = ':';
+ public static final String DEFAULT_NAMESPACE = "minecraft";
+ public static final String REALMS_NAMESPACE = "realms";
++ public static final String PAPER_NAMESPACE = "paper"; // Paper
+ private final String namespace;
+ private final String path;
+
+@@ -40,6 +41,13 @@
+
+ assert isValidPath(path);
+
++ // Paper start - Validate ResourceLocation
++ // Check for the max network string length (capped at Short.MAX_VALUE) as well as the max bytes of a StringTag (length written as an unsigned short)
++ final String resourceLocation = namespace + ":" + path;
++ if (resourceLocation.length() > Short.MAX_VALUE || io.netty.buffer.ByteBufUtil.utf8MaxBytes(resourceLocation) > 2 * Short.MAX_VALUE + 1) {
++ throw new ResourceLocationException("Resource location too long: " + resourceLocation);
++ }
++ // Paper end - Validate ResourceLocation
+ this.namespace = namespace;
+ this.path = path;
+ }
+@@ -246,7 +254,7 @@
+
+ private static String assertValidNamespace(String namespace, String path) {
+ if (!isValidNamespace(namespace)) {
+- throw new ResourceLocationException("Non [a-z0-9_.-] character in namespace of location: " + namespace + ":" + path);
++ throw new ResourceLocationException("Non [a-z0-9_.-] character in namespace of location: " + org.apache.commons.lang3.StringUtils.normalizeSpace(namespace) + ":" + org.apache.commons.lang3.StringUtils.normalizeSpace(path)); // Paper - Sanitize ResourceLocation error logging
+ } else {
+ return namespace;
+ }
+@@ -267,7 +275,7 @@
+
+ private static String assertValidPath(String namespace, String path) {
+ if (!isValidPath(path)) {
+- throw new ResourceLocationException("Non [a-z0-9/._-] character in path of location: " + namespace + ":" + path);
++ throw new ResourceLocationException("Non [a-z0-9/._-] character in path of location: " + namespace + ":" + org.apache.commons.lang3.StringUtils.normalizeSpace(path)); // Paper - Sanitize ResourceLocation error logging
+ } else {
+ return path;
+ }