From 2d7d52d34d5bd6f7b4ee67bc72667a6ccd7729a1 Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 16 Aug 2022 15:55:25 +0800 Subject: [PATCH 1/2] revert and fix parse cmdline bug --- .../tinker/loader/shareutil/ShareTinkerInternals.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java b/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java index ba44d14f9..e2946bfe8 100755 --- a/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java +++ b/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java @@ -582,9 +582,14 @@ private static String getProcessNameInternal(final Context context) { try { in = new BufferedInputStream(new FileInputStream("/proc/self/cmdline")); int len = in.read(buf); - while (len > 0 && (buf[len - 1] <= 0 || buf[len - 1] == 10 || buf[len - 1] == 13)) --len; if (len > 0) { - return new String(buf, StandardCharsets.US_ASCII); + for (int i = 0; i < len; i++) { // lots of '0' in tail , remove them + if ((((int) buf[i]) & 0xFF) > 128 || buf[i] <= 0) { + len = i; + break; + } + } + return new String(buf, 0, len); } } catch (Throwable thr) { ShareTinkerLog.e(TAG, "getProcessNameInternal parse cmdline exception:" + thr.getMessage()); From d058adbf03c4a57ef5aa433747f3896fd12653ec Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 16 Aug 2022 16:06:09 +0800 Subject: [PATCH 2/2] Update ShareTinkerInternals.java --- .../tencent/tinker/loader/shareutil/ShareTinkerInternals.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java b/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java index e2946bfe8..28e04f3a0 100755 --- a/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java +++ b/tinker-android/tinker-android-loader/src/main/java/com/tencent/tinker/loader/shareutil/ShareTinkerInternals.java @@ -584,7 +584,7 @@ private static String getProcessNameInternal(final Context context) { int len = in.read(buf); if (len > 0) { for (int i = 0; i < len; i++) { // lots of '0' in tail , remove them - if ((((int) buf[i]) & 0xFF) > 128 || buf[i] <= 0) { + if ((((int) buf[i]) & 0xFF) > 128 || buf[i] <= 0 || buf[i] == 10 /* lf */ || buf[i] == 13 /* cr */) { len = i; break; }