From c23f9be8d3b8e4db9ac98dffdbf6aae170c2da30 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Sun, 3 Feb 2013 04:08:10 -0600 Subject: [PATCH] Fix ClassCastException for malformed plugin.yml. Fixes BUKKIT-3563 If the plugin.yml gets loaded but wasn't in the form of a map, the server would crash. This safely checks to see if it can be cast, throwing invalid description if it cannot. By: Wesley Wolfe --- .../java/org/bukkit/plugin/PluginDescriptionFile.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java index 3975f38d19..3a5f4e00bd 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java +++ b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java @@ -39,7 +39,7 @@ public final class PluginDescriptionFile { private PermissionDefault defaultPerm = PermissionDefault.OP; public PluginDescriptionFile(final InputStream stream) throws InvalidDescriptionException { - loadMap((Map) yaml.load(stream)); + loadMap(asMap(yaml.load(stream))); } /** @@ -49,7 +49,7 @@ public final class PluginDescriptionFile { * @throws InvalidDescriptionException If the PluginDescriptionFile is invalid */ public PluginDescriptionFile(final Reader reader) throws InvalidDescriptionException { - loadMap((Map) yaml.load(reader)); + loadMap(asMap(yaml.load(reader))); } /** @@ -400,4 +400,11 @@ public final class PluginDescriptionFile { return map; } + + private Map asMap(Object object) throws InvalidDescriptionException { + if (object instanceof Map) { + return (Map) object; + } + throw new InvalidDescriptionException(object + " is not properly structured."); + } }