From 276d0c49c17c186789c875bd95b633ddb019d43a Mon Sep 17 00:00:00 2001 From: ichttt Date: Sun, 20 Jan 2019 17:36:38 +0100 Subject: [PATCH] Validate mod ids --- src/main/java/net/minecraftforge/fml/ModContainer.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/net/minecraftforge/fml/ModContainer.java b/src/main/java/net/minecraftforge/fml/ModContainer.java index 09c4de080c..09f18db6e3 100644 --- a/src/main/java/net/minecraftforge/fml/ModContainer.java +++ b/src/main/java/net/minecraftforge/fml/ModContainer.java @@ -29,6 +29,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Consumer; import java.util.function.Supplier; +import java.util.regex.Pattern; /** * The container that wraps around mods in the system. @@ -45,13 +46,17 @@ import java.util.function.Supplier; public abstract class ModContainer { + private static final Pattern VALID_MODIDS = Pattern.compile("^[a-z0-9_-]{3,64}$"); protected final String modId; protected final IModInfo modInfo; protected ModLoadingStage modLoadingStage; protected final Map> triggerMap; protected final Map> extensionPoints = new IdentityHashMap<>(); + public ModContainer(IModInfo info) { + if (!VALID_MODIDS.matcher(info.getModId()).matches()) + throw new IllegalArgumentException("Invalid modid " + info.getModId() + "! Mod ids need to be lowercase alphanumeric characters or '-'/'_' and need to be between 3 and 64 chars long."); this.modId = info.getModId(); this.modInfo = info; this.triggerMap = new HashMap<>();