From df86dab1abe133b8b7e7e262a2bb5c0baf87f388 Mon Sep 17 00:00:00 2001 From: Julian Burner Date: Wed, 7 Dec 2022 20:11:41 +0100 Subject: Make enum methods `values` and `valueOf` unmappable (#470) * Make enum methods `values` and `valueOf` unmappable * Fix constructor references being remapped * Fix checkstyle * Revert "Fix constructor references being remapped" This reverts commit c65d59c0bcfbecaa31494aa3bd0d493f43bbc099. Co-authored-by: ByMartrixx --- enigma/src/main/java/cuchaz/enigma/EnigmaProject.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'enigma') diff --git a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java index 15d5e98..48d6736 100644 --- a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java @@ -38,6 +38,7 @@ import cuchaz.enigma.translation.mapping.EntryRemapper; import cuchaz.enigma.translation.mapping.MappingsChecker; import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; import cuchaz.enigma.translation.mapping.tree.EntryTree; +import cuchaz.enigma.translation.representation.entry.ClassDefEntry; import cuchaz.enigma.translation.representation.entry.ClassEntry; import cuchaz.enigma.translation.representation.entry.Entry; import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; @@ -150,6 +151,16 @@ public class EnigmaProject { return false; } else if (name.equals("wait") && sig.equals("(JI)V")) { return false; + } else { + ClassDefEntry parent = jarIndex.getEntryIndex().getDefinition(obfMethodEntry.getParent()); + + if (parent != null && parent.getSuperClass() != null && parent.getSuperClass().getFullName().equals("java/lang/Enum")) { + if (name.equals("values") && sig.equals("()[L" + parent.getFullName() + ";")) { + return false; + } else if (name.equals("valueOf") && sig.equals("(Ljava/lang/String;)L" + parent.getFullName() + ";")) { + return false; + } + } } } else if (obfEntry instanceof LocalVariableEntry && !((LocalVariableEntry) obfEntry).isArgument()) { return false; -- cgit v1.2.3