From 4e5ee58892a5f76b262934ef12795bc90a3034b5 Mon Sep 17 00:00:00 2001 From: Dark Arc Date: Mon, 24 Feb 2014 15:53:09 -0500 Subject: [PATCH] Added validation to the CSV implementation of the Locations Manager --- .../commandbook/locations/FlatFileLocationsManager.java | 2 ++ .../com/sk89q/commandbook/locations/HomesComponent.java | 6 +++++- .../com/sk89q/commandbook/locations/WarpsComponent.java | 6 +++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sk89q/commandbook/locations/FlatFileLocationsManager.java b/src/main/java/com/sk89q/commandbook/locations/FlatFileLocationsManager.java index 83dccd9..03702e3 100644 --- a/src/main/java/com/sk89q/commandbook/locations/FlatFileLocationsManager.java +++ b/src/main/java/com/sk89q/commandbook/locations/FlatFileLocationsManager.java @@ -21,6 +21,7 @@ import au.com.bytecode.opencsv.CSVReader; import au.com.bytecode.opencsv.CSVWriter; import com.sk89q.commandbook.CommandBook; +import org.apache.commons.lang.Validate; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -211,6 +212,7 @@ public List getLocations() { public NamedLocation create(String id, Location loc, Player player) { id = id.trim(); + Validate.isTrue(id.matches("^[a-zA-Z0-9-_]*$"), "Location ID contains invalid characters!"); NamedLocation warp = new NamedLocation(id, loc); locations.put(id.toLowerCase(), warp); if (player != null) { diff --git a/src/main/java/com/sk89q/commandbook/locations/HomesComponent.java b/src/main/java/com/sk89q/commandbook/locations/HomesComponent.java index 842660e..fb5c03b 100644 --- a/src/main/java/com/sk89q/commandbook/locations/HomesComponent.java +++ b/src/main/java/com/sk89q/commandbook/locations/HomesComponent.java @@ -132,7 +132,11 @@ public void setHome(CommandContext args, CommandSender sender) throws CommandExc } } - getManager().create(homeName, loc, player); + try { + getManager().create(homeName, loc, player); + } catch (IllegalArgumentException ex) { + throw new CommandException("Invalid home name!"); + } sender.sendMessage(ChatColor.YELLOW + "Home set."); } diff --git a/src/main/java/com/sk89q/commandbook/locations/WarpsComponent.java b/src/main/java/com/sk89q/commandbook/locations/WarpsComponent.java index 86cc98a..9860bd0 100644 --- a/src/main/java/com/sk89q/commandbook/locations/WarpsComponent.java +++ b/src/main/java/com/sk89q/commandbook/locations/WarpsComponent.java @@ -124,7 +124,11 @@ public void setWarp(CommandContext args, CommandSender sender) throws CommandExc } } - getManager().create(warpName, loc, player); + try { + getManager().create(warpName, loc, player); + } catch (IllegalArgumentException ex) { + throw new CommandException("Invalid warp name!"); + } sender.sendMessage(ChatColor.YELLOW + "Warp '" + warpName + "' created."); }