From c65a64fc89169456febc1b4c953dbcfbafdc5f0e Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 18 Sep 2014 00:17:43 -0400 Subject: added better error handling for source export added checks to make sure we don't try to decopmile classes outside of the jar --- src/cuchaz/enigma/Deobfuscator.java | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/cuchaz/enigma/Deobfuscator.java') diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java index 0847049..1178ed6 100644 --- a/src/cuchaz/enigma/Deobfuscator.java +++ b/src/cuchaz/enigma/Deobfuscator.java @@ -200,6 +200,12 @@ public class Deobfuscator className = classMapping.getDeobfName(); } + // is this class even in the jar? + if( !m_jarIndex.containsObfClass( new ClassEntry( className ) ) ) + { + return null; + } + // set the type loader m_settings.setTypeLoader( new TranslatingTypeLoader( m_jar, @@ -279,15 +285,22 @@ public class Deobfuscator progress.onProgress( i++, deobfClassEntry.toString() ); } - // get the source - String source = getSource( getSourceTree( obfClassEntry.getName() ) ); - - // write the file - File file = new File( dirOut, deobfClassEntry.getName().replace( '.', '/' ) + ".java" ); - file.getParentFile().mkdirs(); - try( FileWriter out = new FileWriter( file ) ) + try + { + // get the source + String source = getSource( getSourceTree( obfClassEntry.getName() ) ); + + // write the file + File file = new File( dirOut, deobfClassEntry.getName().replace( '.', '/' ) + ".java" ); + file.getParentFile().mkdirs(); + try( FileWriter out = new FileWriter( file ) ) + { + out.write( source ); + } + } + catch( Throwable t ) { - out.write( source ); + throw new Error( "Unable to deobfuscate class " + deobfClassEntry.toString() + " (" + obfClassEntry.toString() + ")", t ); } } -- cgit v1.2.3