From 5e722c6827dd3b001239e3fb030dbe41a9279bac Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 29 Nov 2014 16:49:16 +0300 Subject: [PATCH] fix issues reported by coverity --- .../src/main/java/jadx/core/codegen/InsnGen.java | 3 +++ .../jadx/core/dex/instructions/args/InsnArg.java | 3 +++ .../jadx/core/dex/visitors/ConstInlinerVisitor.java | 12 ++++++------ .../visitors/blocksmaker/BlockFinallyExtract.java | 5 ++++- .../src/main/java/jadx/gui/update/JadxUpdate.java | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java index 76998b998..fcbb67ac6 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -535,6 +535,9 @@ public class InsnGen { if (!elType.isTypeKnown()) { LOG.warn("Unknown array element type: {} in mth: {}", elType, mth); elType = insnElementType.isTypeKnown() ? insnElementType : elType.selectFirst(); + if (elType == null) { + throw new JadxRuntimeException("Null array element type"); + } } insn.mergeElementType(elType); diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java index ff1429b1a..0fea36715 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java @@ -7,6 +7,7 @@ import jadx.core.utils.InsnUtils; import java.util.ArrayList; import java.util.List; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +21,7 @@ public abstract class InsnArg extends Typed { private static final Logger LOG = LoggerFactory.getLogger(InsnArg.class); + @Nullable("Null for method arguments") protected InsnNode parentInsn; public static RegisterArg reg(int regNum, ArgType type) { @@ -70,6 +72,7 @@ public abstract class InsnArg extends Typed { return false; } + @Nullable public InsnNode getParentInsn() { return parentInsn; } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java index 8fc0d0cd0..7235b585a 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java @@ -52,14 +52,14 @@ public class ConstInlinerVisitor extends AbstractVisitor { long lit = ((LiteralArg) arg).getLiteral(); SSAVar sVar = insn.getResult().getSVar(); - if (lit == 0) { - if (checkObjectInline(sVar)) { - if (sVar.getUseCount() == 1) { - insn.getResult().getAssignInsn().add(AFlag.DONT_INLINE); + if (lit == 0 && checkObjectInline(sVar)) { + if (sVar.getUseCount() == 1) { + InsnNode assignInsn = insn.getResult().getAssignInsn(); + if (assignInsn != null) { + assignInsn.add(AFlag.DONT_INLINE); } - return false; } - + return false; } ArgType resType = insn.getResult().getType(); // make sure arg has correct type diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java index c6ac58984..b23ebe5a1 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java @@ -468,6 +468,10 @@ public class BlockFinallyExtract extends AbstractVisitor { if (pred == null) { return; } + IgnoreEdgeAttr edgeAttr = pred.get(AType.IGNORE_EDGE); + if (edgeAttr == null) { + return; + } List merge = new LinkedList(); for (BlockNode blockNode : pred.getSuccessors()) { if (blockNode.contains(AFlag.RETURN)) { @@ -488,7 +492,6 @@ public class BlockFinallyExtract extends AbstractVisitor { if (origReturnBlock == null) { return; } - IgnoreEdgeAttr edgeAttr = pred.get(AType.IGNORE_EDGE); for (BlockNode mb : merge) { if (mb == origReturnBlock) { continue; diff --git a/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java b/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java index 707689ca2..fcd5a9636 100644 --- a/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java +++ b/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java @@ -102,7 +102,7 @@ public class JadxUpdate { HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); if (con.getResponseCode() == 200) { - Reader reader = new InputStreamReader(con.getInputStream()); + Reader reader = new InputStreamReader(con.getInputStream(), "UTF-8"); return GSON.fromJson(reader, type); } return null;