diff options
author | md_5 <git@md-5.net> | 2016-07-13 11:47:57 +1000 |
---|---|---|
committer | md_5 <git@md-5.net> | 2016-07-13 11:47:57 +1000 |
commit | 301db84d3d85f5218f3ec590224071c04140bbe2 (patch) | |
tree | 2e789d9e8f91fe90eaa47d608ab28e70ffc58d8d /nms-patches/ItemSkull.patch | |
parent | ca1bb1c44509603ef94285c7c4729b79026ae4cb (diff) | |
download | craftbukkit-301db84d3d85f5218f3ec590224071c04140bbe2.tar craftbukkit-301db84d3d85f5218f3ec590224071c04140bbe2.tar.gz craftbukkit-301db84d3d85f5218f3ec590224071c04140bbe2.tar.lz craftbukkit-301db84d3d85f5218f3ec590224071c04140bbe2.tar.xz craftbukkit-301db84d3d85f5218f3ec590224071c04140bbe2.zip |
SPIGOT-2520: Better skull validation
Diffstat (limited to 'nms-patches/ItemSkull.patch')
-rw-r--r-- | nms-patches/ItemSkull.patch | 17 |
1 files 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; } } |