fix: disable usage of JDK Unsafe class in GSON (#2341)
This commit is contained in:
@@ -9,7 +9,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.google.gson.FieldNamingPolicy;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import jadx.api.ICodeInfo;
|
||||
import jadx.api.ICodeWriter;
|
||||
@@ -32,13 +31,13 @@ import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.core.dex.nodes.FieldNode;
|
||||
import jadx.core.dex.nodes.MethodNode;
|
||||
import jadx.core.dex.nodes.RootNode;
|
||||
import jadx.core.utils.GsonUtils;
|
||||
import jadx.core.utils.Utils;
|
||||
import jadx.core.utils.exceptions.JadxRuntimeException;
|
||||
|
||||
public class JsonCodeGen {
|
||||
|
||||
private static final Gson GSON = new GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
private static final Gson GSON = GsonUtils.defaultGsonBuilder()
|
||||
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES)
|
||||
.disableHtmlEscaping()
|
||||
.create();
|
||||
|
||||
@@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.gson.FieldNamingPolicy;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import jadx.api.JadxArgs;
|
||||
import jadx.core.codegen.json.mapping.JsonClsMapping;
|
||||
@@ -24,14 +23,14 @@ import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.core.dex.nodes.FieldNode;
|
||||
import jadx.core.dex.nodes.MethodNode;
|
||||
import jadx.core.dex.nodes.RootNode;
|
||||
import jadx.core.utils.GsonUtils;
|
||||
import jadx.core.utils.exceptions.JadxRuntimeException;
|
||||
import jadx.core.utils.files.FileUtils;
|
||||
|
||||
public class JsonMappingGen {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(JsonMappingGen.class);
|
||||
|
||||
private static final Gson GSON = new GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
private static final Gson GSON = GsonUtils.defaultGsonBuilder()
|
||||
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES)
|
||||
.disableHtmlEscaping()
|
||||
.create();
|
||||
|
||||
@@ -2,6 +2,9 @@ package jadx.core.utils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.InstanceCreator;
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
@@ -11,11 +14,27 @@ import com.google.gson.JsonSerializer;
|
||||
|
||||
public class GsonUtils {
|
||||
|
||||
public static Gson buildGson() {
|
||||
return defaultGsonBuilder().create();
|
||||
}
|
||||
|
||||
public static GsonBuilder defaultGsonBuilder() {
|
||||
return new GsonBuilder()
|
||||
.disableJdkUnsafe()
|
||||
.setPrettyPrinting();
|
||||
}
|
||||
|
||||
public static void fillObjectFromJsonString(GsonBuilder builder, Object obj, String jsonStr) {
|
||||
Class<?> type = obj.getClass();
|
||||
Gson gson = builder.registerTypeAdapter(type, (InstanceCreator<?>) t -> obj).create();
|
||||
gson.fromJson(jsonStr, type);
|
||||
}
|
||||
|
||||
public static <T> InterfaceReplace<T> interfaceReplace(Class<T> replaceCls) {
|
||||
return new InterfaceReplace<>(replaceCls);
|
||||
}
|
||||
|
||||
private static final class InterfaceReplace<T> implements JsonSerializer<T>, JsonDeserializer<T> {
|
||||
public static final class InterfaceReplace<T> implements JsonSerializer<T>, JsonDeserializer<T> {
|
||||
private final Class<T> replaceCls;
|
||||
|
||||
private InterfaceReplace(Class<T> replaceCls) {
|
||||
|
||||
Reference in New Issue
Block a user