From 005a59668c760db397ea8bc800814ab9d3fb0eaa Mon Sep 17 00:00:00 2001 From: "Jan S." Date: Wed, 7 Jan 2026 17:22:18 +0100 Subject: [PATCH] fix(res): as workaround use INVALID_STRING_PLACEHOLDER when string offset is is negative (#2729)(PR #2739) core: as workaround use INVALID_STRING_PLACEHOLDER when string offset is negative --- .../src/main/java/jadx/core/xmlgen/BinaryXMLStrings.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLStrings.java b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLStrings.java index a5090f044..3900fa0fc 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLStrings.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLStrings.java @@ -45,7 +45,13 @@ public class BinaryXMLStrings { return INVALID_STRING_PLACEHOLDER; } - long offset = stringsStart + buffer.getInt(id * 4); + int off = buffer.getInt(id * 4); + if (off < 0) { + // read unsigned offset value is larger than Integer.MAX_VALUE + // In reality this should only happen in obfuscated APKs with invalid offsets + return INVALID_STRING_PLACEHOLDER; + } + long offset = stringsStart + off; String extracted; if (isUtf8) { extracted = extractString8(this.buffer.array(), (int) offset);