From 301db84d3d85f5218f3ec590224071c04140bbe2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 13 Jul 2016 11:47:57 +1000 Subject: SPIGOT-2520: Better skull validation --- nms-patches/ItemSkull.patch | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/nms-patches/ItemSkull.patch b/nms-patches/ItemSkull.patch index 2845d0f9..81de4153 100644 --- a/nms-patches/ItemSkull.patch +++ b/nms-patches/ItemSkull.patch @@ -1,10 +1,23 @@ --- a/net/minecraft/server/ItemSkull.java +++ b/net/minecraft/server/ItemSkull.java -@@ -117,6 +117,7 @@ +@@ -117,6 +117,20 @@ nbttagcompound.set("SkullOwner", GameProfileSerializer.serialize(new NBTTagCompound(), gameprofile)); return true; } else { -+ nbttagcompound.remove("SkullOwner"); // CraftBukkit - remove broken skulls ++ // CraftBukkit start ++ boolean valid = true; ++ ++ NBTTagList textures = nbttagcompound.getCompound("SkullOwner").getCompound("Properties").getList("textures", 10); // Safe due to method contracts ++ for (int i = 0; i < textures.size(); i++) { ++ if (textures.get(i) instanceof NBTTagCompound && !((NBTTagCompound) textures.get(i)).hasKeyOfType("Signature", 8)) { ++ valid = false; ++ } ++ } ++ ++ if (!valid) { ++ nbttagcompound.remove("SkullOwner"); ++ } ++ // CraftBukkit end return false; } } -- cgit v1.2.3