From c93dd196784dc793277cce980a382a1601fd2abd Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:35:39 -0700 Subject: [PATCH] enforce registry IDs to be alphanumeric with hyphens & underscores --- .../java/com/dfsek/terra/registry/OpenRegistryImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index cde06c1d4..3cbbdf32a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -1,6 +1,7 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.ConfigLoader; import java.lang.reflect.AnnotatedType; @@ -11,6 +12,7 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.regex.Pattern; import java.util.stream.Collector; import java.util.stream.Collectors; @@ -27,6 +29,8 @@ public class OpenRegistryImpl implements OpenRegistry { private static final Entry NULL = new Entry<>(null); private final Map> objects; + private static final Pattern ID_PATTERN = Pattern.compile("^[a-zA-Z0-9_-]*$"); + public OpenRegistryImpl() { objects = new HashMap<>(); } @@ -66,6 +70,8 @@ public class OpenRegistryImpl implements OpenRegistry { } public boolean register(String identifier, Entry value) { + if(!ID_PATTERN.matcher(identifier).matches()) + throw new IllegalArgumentException("Registry ID must only contain alphanumeric characters, hyphens, and underscores. \"" + identifier + "\" is not a valid ID."); boolean exists = objects.containsKey(identifier); objects.put(identifier, value); return exists;