From c84a5d7fa2f391097f4c565b4895d53bc898564a Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Thu, 10 Apr 2014 20:24:24 +0200 Subject: [PATCH] Handle the possibility that getSuperclass() returns NULL. Thanks to libraryaddict for discovering this bug. --- .../src/main/java/com/comphenix/protocol/CommandPacket.java | 5 +++-- .../java/com/comphenix/protocol/reflect/ObjectWriter.java | 2 +- .../java/com/comphenix/protocol/reflect/PrettyPrinter.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java b/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java index 96ab0a05..bec5e6bc 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java @@ -339,8 +339,9 @@ class CommandPacket extends CommandBase { Class clazz = packet.getClass(); // Get the first Minecraft super class - while ((!MinecraftReflection.isMinecraftClass(clazz) || - Factory.class.isAssignableFrom(clazz)) && clazz != Object.class) { + while (clazz != null && clazz != Object.class && + (!MinecraftReflection.isMinecraftClass(clazz) || + Factory.class.isAssignableFrom(clazz))) { clazz = clazz.getSuperclass(); } diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectWriter.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectWriter.java index 5ab3eb2d..91e3a14b 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectWriter.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectWriter.java @@ -119,7 +119,7 @@ public class ObjectWriter { // Copy private fields underneath Class superclass = commonType.getSuperclass(); - if (!superclass.equals(Object.class)) { + if (superclass != null && !superclass.equals(Object.class)) { copyToInternal(source, destination, superclass, false); } diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/PrettyPrinter.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/PrettyPrinter.java index a4e56b50..ad2e8d4c 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/PrettyPrinter.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/PrettyPrinter.java @@ -210,7 +210,7 @@ public class PrettyPrinter { ObjectPrinter printer) throws IllegalAccessException { // See if we're supposed to skip this class - if (current == Object.class || (stop != null && current.equals(stop))) { + if (current == null || current == Object.class || (stop != null && current.equals(stop))) { return; }