From d064c19d3547434b687030a9f4b76161c2cf91c8 Mon Sep 17 00:00:00 2001 From: Nico Mexis Date: Mon, 14 Feb 2022 11:57:29 +0100 Subject: [PATCH] Fix Relative Path Traversal --- .../googlecode/d2j/smali/BaksmaliDumper.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java b/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java index d997227e2..0040af6fa 100644 --- a/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java +++ b/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java @@ -92,17 +92,25 @@ static String escapeType(String id) { return escapeBuff.toString(); } + static String escapeId(String id) { + StringBuilder escapeBuff = new StringBuilder(); + escapeId0(escapeBuff, id); + return escapeBuff.toString(); + } + static void escapeId0(StringBuilder sb, String id) { for (int i = 0; i < id.length(); ++i) { char c = id.charAt(i); - escape1(sb, c); + escapeId1(sb, c); } } - static String escapeId(String id) { - StringBuilder escapeBuff = new StringBuilder(); - escapeId0(escapeBuff, id); - return escapeBuff.toString(); + static void escapeId1(final StringBuilder buf, char c) { + if (c == '\\' || c == '/' || c == '.') { + buf.append(String.format("\\u%04x", (int) c)); + } else { + escape1(buf, c); + } } static void escape1(final StringBuilder buf, char c) {