From 5e62b9077aecb9448bea5459b308d836893d21f3 Mon Sep 17 00:00:00 2001 From: Skylot Date: Mon, 1 Jun 2020 21:38:52 +0100 Subject: [PATCH] fix: resolve ClassCastException on encoded value access (#946) --- jadx-core/src/main/java/jadx/core/codegen/RegionGen.java | 4 ++-- jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java b/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java index bb394fc0d..dd0852d50 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java @@ -287,9 +287,9 @@ public class RegionGen extends InsnGen { staticField(code, fn.getFieldInfo()); // print original value, sometimes replaced with incorrect field FieldInitAttr valueAttr = fn.get(AType.FIELD_INIT); - if (valueAttr != null) { + if (valueAttr != null && valueAttr.getValueType() == FieldInitAttr.InitType.CONST) { Object value = valueAttr.getEncodedValue(); - if (value != null && valueAttr.getValueType() == FieldInitAttr.InitType.CONST) { + if (value != null) { code.add(" /*").add(value.toString()).add("*/"); } } diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java b/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java index a605c4d44..0b299eec4 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java @@ -72,9 +72,9 @@ public class ConstStorage { if (accFlags.isStatic() && accFlags.isFinal()) { FieldInitAttr fv = f.get(AType.FIELD_INIT); if (fv != null - && fv.getEncodedValue() != null && fv.getValueType() == FieldInitAttr.InitType.CONST - && fv != FieldInitAttr.NULL_VALUE) { + && fv != FieldInitAttr.NULL_VALUE + && fv.getEncodedValue() != null) { addConstField(cls, f, fv.getEncodedValue().getValue(), accFlags.isPublic()); } }