summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma
diff options
context:
space:
mode:
authorGravatar Thog2016-11-18 17:34:45 +0100
committerGravatar Thog2016-11-18 17:34:45 +0100
commitbc7f9a6d9afac7029ccab2c6d56b39fec49a0b86 (patch)
tree1fb48ef030e9630a40188f422b104cabe41704e3 /src/main/java/cuchaz/enigma
parentMerge branch 'feature/method-converter' (diff)
downloadenigma-fork-bc7f9a6d9afac7029ccab2c6d56b39fec49a0b86.tar.gz
enigma-fork-bc7f9a6d9afac7029ccab2c6d56b39fec49a0b86.tar.xz
enigma-fork-bc7f9a6d9afac7029ccab2c6d56b39fec49a0b86.zip
Avoid crash of the matcher when the obf name is invalid (set a deob it using the suffix '_auto_deob')
Diffstat (limited to 'src/main/java/cuchaz/enigma')
-rw-r--r--src/main/java/cuchaz/enigma/mapping/FieldMapping.java18
-rw-r--r--src/main/java/cuchaz/enigma/mapping/MethodMapping.java15
2 files changed, 30 insertions, 3 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/FieldMapping.java b/src/main/java/cuchaz/enigma/mapping/FieldMapping.java
index e75485c..83e2277 100644
--- a/src/main/java/cuchaz/enigma/mapping/FieldMapping.java
+++ b/src/main/java/cuchaz/enigma/mapping/FieldMapping.java
@@ -10,6 +10,8 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.mapping; 11package cuchaz.enigma.mapping;
12 12
13import cuchaz.enigma.throwables.IllegalNameException;
14
13public class FieldMapping implements Comparable<FieldMapping>, MemberMapping<FieldEntry> { 15public class FieldMapping implements Comparable<FieldMapping>, MemberMapping<FieldEntry> {
14 16
15 private String obfName; 17 private String obfName;
@@ -49,8 +51,20 @@ public class FieldMapping implements Comparable<FieldMapping>, MemberMapping<Fie
49 this.deobfName = NameValidator.validateFieldName(val); 51 this.deobfName = NameValidator.validateFieldName(val);
50 } 52 }
51 53
52 public void setObfName(String val) { 54 public void setObfName(String name) {
53 this.obfName = NameValidator.validateFieldName(val); 55 try
56 {
57 NameValidator.validateMethodName(name);
58 } catch (IllegalNameException ex)
59 {
60 // Invalid name, damn obfuscation! Map to a deob name with another name to avoid issues
61 if (this.deobfName == null)
62 {
63 System.err.println("WARNING: " + name + " is conflicting, auto deobfuscate to " + (name + "_auto_deob"));
64 setDeobfName(name + "_auto_deob");
65 }
66 }
67 this.obfName = name;
54 } 68 }
55 69
56 public Type getObfType() { 70 public Type getObfType() {
diff --git a/src/main/java/cuchaz/enigma/mapping/MethodMapping.java b/src/main/java/cuchaz/enigma/mapping/MethodMapping.java
index 455ff6b..f973d6b 100644
--- a/src/main/java/cuchaz/enigma/mapping/MethodMapping.java
+++ b/src/main/java/cuchaz/enigma/mapping/MethodMapping.java
@@ -14,6 +14,7 @@ import com.google.common.collect.Maps;
14 14
15import java.util.Map; 15import java.util.Map;
16 16
17import cuchaz.enigma.throwables.IllegalNameException;
17import cuchaz.enigma.throwables.MappingConflict; 18import cuchaz.enigma.throwables.MappingConflict;
18 19
19public class MethodMapping implements Comparable<MethodMapping>, MemberMapping<BehaviorEntry> { 20public class MethodMapping implements Comparable<MethodMapping>, MemberMapping<BehaviorEntry> {
@@ -75,7 +76,19 @@ public class MethodMapping implements Comparable<MethodMapping>, MemberMapping<B
75 } 76 }
76 77
77 public void setObfName(String name) { 78 public void setObfName(String name) {
78 this.obfName = NameValidator.validateMethodName(name); 79 try
80 {
81 NameValidator.validateMethodName(name);
82 } catch (IllegalNameException ex)
83 {
84 // Invalid name, damn obfuscation! Map to a deob name with another name to avoid issues
85 if (this.deobfName == null)
86 {
87 System.err.println("WARNING: " + name + " is conflicting, auto deobfuscate to " + (name + "_auto_deob"));
88 setDeobfName(name + "_auto_deob");
89 }
90 }
91 this.obfName = name;
79 } 92 }
80 93
81 public void setObfSignature(Signature val) { 94 public void setObfSignature(Signature val) {