From e505a51e4cc7ad4c4faa7e502bd11a63e39cf30e Mon Sep 17 00:00:00 2001 From: Suddenly Date: Tue, 8 Jul 2014 09:44:18 +1000 Subject: [PATCH] Safer JSON Loading diff --git a/src/main/java/net/minecraft/server/players/JsonList.java b/src/main/java/net/minecraft/server/players/JsonList.java index 04a730277e..2b254136ff 100644 --- a/src/main/java/net/minecraft/server/players/JsonList.java +++ b/src/main/java/net/minecraft/server/players/JsonList.java @@ -175,6 +175,14 @@ public abstract class JsonList> { this.map.put(this.getKeyForUser(jsonlistentry.getUser()), (V) jsonlistentry); // CraftBukkit - decompile error } } + // Spigot Start + } catch ( com.google.gson.JsonParseException | NullPointerException ex ) + { + org.bukkit.Bukkit.getLogger().log( java.util.logging.Level.WARNING, "Unable to read file " + this.file + ", backing it up to {0}.backup and creating new copy.", ex ); + File backup = new File( this.file + ".backup" ); + this.file.renameTo( backup ); + this.file.delete(); + // Spigot End } catch (Throwable throwable) { if (bufferedreader != null) { try { diff --git a/src/main/java/net/minecraft/server/players/UserCache.java b/src/main/java/net/minecraft/server/players/UserCache.java index bde5f6086d..01e9ec3bf1 100644 --- a/src/main/java/net/minecraft/server/players/UserCache.java +++ b/src/main/java/net/minecraft/server/players/UserCache.java @@ -248,6 +248,11 @@ public class UserCache { } } catch (FileNotFoundException filenotfoundexception) { ; + // Spigot Start + } catch (com.google.gson.JsonSyntaxException | NullPointerException ex) { + UserCache.LOGGER.warn( "Usercache.json is corrupted or has bad formatting. Deleting it to prevent further issues." ); + this.file.delete(); + // Spigot End } catch (JsonParseException | IOException ioexception) { UserCache.LOGGER.warn("Failed to load profile cache {}", this.file, ioexception); } -- 2.42.0