Regex globs

- Parse Schedule Destination, Fetch Packages package addresses with glob
- Also prevent regex injection in all 3 of the above
This commit is contained in:
IThundxr 2025-01-25 15:07:45 -05:00
parent 16f4c3354d
commit 80dcbb4177
Failed to generate hash of commit
5 changed files with 13 additions and 12 deletions

View file

@ -27,7 +27,7 @@ jei_minecraft_version = 1.20.1
jei_version = 15.10.0.39
curios_minecraft_version = 1.20.1
curios_version = 5.3.1
ponder_version = 0.9.19
ponder_version = 0.9.20
mixin_extras_version = 0.4.1
cc_tweaked_enable = true

View file

@ -11,6 +11,7 @@ import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.box.PackageStyles.PackageStyle;
import com.simibubi.create.content.logistics.stockTicker.PackageOrder;
import net.createmod.catnip.data.Glob;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.lang.Components;
import net.minecraft.ChatFormatting;
@ -155,8 +156,8 @@ public class PackageItem extends Item {
return boxAddress.isBlank();
if (address.equals("*") || boxAddress.equals("*"))
return true;
String matcher = "\\Q" + address.replace("*", "\\E.*\\Q") + "\\E";
String boxMatcher = "\\Q" + boxAddress.replace("*", "\\E.*\\Q") + "\\E";
String matcher = Glob.toRegexPattern(address, "");
String boxMatcher = Glob.toRegexPattern(boxAddress, "");
return address.matches(boxMatcher) || boxAddress.matches(matcher);
}

View file

@ -9,6 +9,8 @@ import java.util.Map;
import com.simibubi.create.Create;
import com.simibubi.create.content.trains.entity.Train;
import net.createmod.catnip.data.Glob;
import net.minecraft.network.chat.MutableComponent;
public class GlobalTrainDisplayData {
@ -30,7 +32,7 @@ public class GlobalTrainDisplayData {
}
public static List<TrainDeparturePrediction> prepare(String filter, int maxLines) {
String regex = filter.isBlank() ? filter : "\\Q" + filter.replace("*", "\\E.*\\Q") + "\\E";
String regex = Glob.toRegexPattern(filter, "");
return statusByDestination.entrySet()
.stream()
.filter(e -> e.getKey()

View file

@ -6,6 +6,8 @@ import java.util.regex.PatternSyntaxException;
import javax.annotation.Nullable;
import net.createmod.catnip.data.Glob;
import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.ImmutableList;
@ -55,10 +57,7 @@ public class DestinationInstruction extends TextScheduleInstruction {
}
public String getFilterForRegex() {
String filter = getFilter();
if (filter.isBlank())
return filter;
return "\\Q" + filter.replace("*", "\\E.*\\Q") + "\\E";
return Glob.toRegexPattern(getFilter(), "");
}
@Override

View file

@ -5,6 +5,8 @@ import java.util.List;
import java.util.Map.Entry;
import java.util.regex.PatternSyntaxException;
import net.createmod.catnip.data.Glob;
import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.ImmutableList;
@ -65,10 +67,7 @@ public class FetchPackagesInstruction extends TextScheduleInstruction {
}
public String getFilterForRegex() {
String filter = getFilter();
if (filter.isBlank())
return filter;
return "\\Q" + filter.replace("*", "\\E.*\\Q") + "\\E";
return Glob.toRegexPattern(getFilter(), "");
}
@Override