Skip to content

Commit 1bd15c1

Browse files
committed
Prevent transformer list from being modified
1 parent f9c1f7f commit 1bd15c1

File tree

4 files changed

+122
-7
lines changed

4 files changed

+122
-7
lines changed

src/java/com/javadeobfuscator/deobfuscator/ui/FxWindow.java

Lines changed: 114 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.javadeobfuscator.deobfuscator.ui;
22

33
import java.io.PrintStream;
4-
4+
import java.util.Collection;
5+
import java.util.List;
56
import javax.swing.JOptionPane;
67

78
import org.controlsfx.control.ListSelectionView;
@@ -14,6 +15,7 @@
1415

1516
import javafx.application.Application;
1617
import javafx.application.Platform;
18+
import javafx.collections.ObservableListBase;
1719
import javafx.event.ActionEvent;
1820
import javafx.event.EventHandler;
1921
import javafx.scene.Scene;
@@ -52,7 +54,7 @@ protected void updateItem(Class<?> item, boolean empty) {
5254
}
5355
}
5456
});
55-
selectedTransformers.getSourceItems().addAll(trans.getTransformers());
57+
selectedTransformers.setSourceItems(new ImmutableTransformerList(trans.getTransformers()));
5658
TitledPane wrapper2 = new TitledPane("Transformers", selectedTransformers);
5759
// log
5860
ListView<String> logging = new ListView<>();
@@ -176,4 +178,114 @@ public static void fatalFX(String title, String text) {
176178
.hideAfter(time).showError();
177179
//@formatter:on
178180
}
181+
182+
private class ImmutableTransformerList extends ObservableListBase<Class<?>>
183+
{
184+
private List<Class<?>> value;
185+
186+
public ImmutableTransformerList(List<Class<?>> value)
187+
{
188+
super.addAll(value);
189+
this.value = value;
190+
}
191+
192+
@Override
193+
public boolean add(Class<?> arg0)
194+
{
195+
return false;
196+
}
197+
198+
@Override
199+
public void add(int arg0, Class<?> arg1)
200+
{
201+
}
202+
203+
@Override
204+
public boolean addAll(Collection<? extends Class<?>> arg0)
205+
{
206+
return false;
207+
}
208+
209+
@Override
210+
public boolean addAll(int arg0, Collection<? extends Class<?>> arg1)
211+
{
212+
return false;
213+
}
214+
215+
@Override
216+
public void clear()
217+
{
218+
}
219+
220+
@Override
221+
public boolean remove(Object arg0)
222+
{
223+
return false;
224+
}
225+
226+
@Override
227+
public Class<?> remove(int arg0)
228+
{
229+
return null;
230+
}
231+
232+
@Override
233+
public boolean removeAll(Collection<?> c)
234+
{
235+
return false;
236+
}
237+
238+
@Override
239+
public boolean retainAll(Collection<?> c)
240+
{
241+
return false;
242+
}
243+
244+
@Override
245+
public Class<?> set(int index, Class<?> element)
246+
{
247+
return null;
248+
}
249+
250+
@Override
251+
public boolean addAll(Class<?>... elements)
252+
{
253+
return false;
254+
}
255+
256+
@Override
257+
public boolean setAll(Class<?>... elements)
258+
{
259+
return false;
260+
}
261+
262+
@Override
263+
public boolean setAll(Collection<? extends Class<?>> col)
264+
{
265+
return false;
266+
}
267+
268+
@Override
269+
public boolean removeAll(Class<?>... elements)
270+
{
271+
return false;
272+
}
273+
274+
@Override
275+
public void remove(int from, int to)
276+
{
277+
}
278+
279+
@Override
280+
public Class<?> get(int arg0)
281+
{
282+
return value.get(arg0);
283+
}
284+
285+
@Override
286+
public int size()
287+
{
288+
return value.size();
289+
}
290+
}
179291
}

src/java/com/javadeobfuscator/deobfuscator/ui/component/StringListEditor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.javadeobfuscator.deobfuscator.ui.component;
22

3-
import java.io.File;
43
import java.util.List;
54

65
import org.controlsfx.control.PropertySheet.Item;

src/java/com/javadeobfuscator/deobfuscator/ui/wrap/Transformers.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.javadeobfuscator.deobfuscator.ui.wrap;
22

3-
import java.lang.reflect.Field;
43
import java.lang.reflect.Method;
54
import java.util.ArrayList;
65
import java.util.Collections;
76
import java.util.List;
8-
import java.util.Set;
97

108
import com.javadeobfuscator.deobfuscator.ui.FxWindow;
119
import com.javadeobfuscator.deobfuscator.ui.util.ByteLoader;
12-
import com.javadeobfuscator.deobfuscator.ui.util.Reflect;
1310

1411
public class Transformers {
1512
// load with:

src/java/com/javadeobfuscator/deobfuscator/ui/wrap/WrapperFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,14 @@ private static Map<String, byte[]> readClasses(File jar) throws IOException, Inv
151151
// skip non-classes (Deobfuscator doesn't have any resources aside for
152152
// META, which we will bundle to appease SLF4J's ServiceLoader screwery.)
153153
byte[] value = from(is);
154-
String className = new MiniClassReader(value).getClassName();
154+
String className;
155+
try
156+
{
157+
className = new MiniClassReader(value).getClassName();
158+
}catch(Exception e)
159+
{
160+
continue;
161+
}
155162
// We know this class is in the deobfuscator jar, so if the jar does
156163
// not contain it, it is not the correct file.
157164
if (className.contains("com/javadeobfuscator/deobfuscator/Deobfuscator")) {

0 commit comments

Comments
 (0)