diff --git a/Spigot-Server-Patches/Add-system-property-to-disable-book-size-limits.patch b/Spigot-Server-Patches/Add-system-property-to-disable-book-size-limits.patch new file mode 100644 index 0000000000..56425dcfe8 --- /dev/null +++ b/Spigot-Server-Patches/Add-system-property-to-disable-book-size-limits.patch @@ -0,0 +1,59 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Zach Brown <1254957+zachbr@users.noreply.github.com> +Date: Sat, 13 May 2017 20:11:21 -0500 +Subject: [PATCH] Add system property to disable book size limits + +If anyone comes in with a watchdog crash related to books after this patch +you will not only be publicly shamed but also made an example of. + +Disables the security limits on books entirely, allowing plugins AND players +to make books with as much data as they want. Do not use this without +limiting incoming data from packets in some other way. + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +index 78065e134..4e04134c0 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +@@ -0,0 +0,0 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { + static final int MAX_PAGES = 50; + static final int MAX_PAGE_LENGTH = 256; + static final int MAX_TITLE_LENGTH = 32; ++ private static final boolean OVERRIDE_CHECKS = Boolean.getBoolean("disable.book-limits"); // Paper - Add override + + protected String title; + protected String author; +@@ -0,0 +0,0 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { + if (title == null) { + this.title = null; + return true; +- } else if (title.length() > MAX_TITLE_LENGTH) { ++ } else if (title.length() > MAX_TITLE_LENGTH && !OVERRIDE_CHECKS) { // Paper - Add override + return false; + } + +@@ -0,0 +0,0 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { + throw new IllegalArgumentException("Invalid page number " + page + "/" + pages.size()); + } + +- String newText = text == null ? "" : text.length() > MAX_PAGE_LENGTH ? text.substring(0, MAX_PAGE_LENGTH) : text; ++ String newText = text == null ? "" : text.length() > MAX_PAGE_LENGTH && !OVERRIDE_CHECKS ? text.substring(0, MAX_PAGE_LENGTH) : text; + pages.set(page - 1, CraftChatMessage.fromString(newText, true)[0]); + } + +@@ -0,0 +0,0 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { + + public void addPage(final String... pages) { + for (String page : pages) { +- if (this.pages.size() >= MAX_PAGES) { ++ if (this.pages.size() >= MAX_PAGES && !OVERRIDE_CHECKS) { + return; + } + + if (page == null) { + page = ""; +- } else if (page.length() > MAX_PAGE_LENGTH) { ++ } else if (page.length() > MAX_PAGE_LENGTH && !OVERRIDE_CHECKS) { // Paper - Add override + page = page.substring(0, MAX_PAGE_LENGTH); + } + +-- \ No newline at end of file