From ae5f8a70ae2b45fa711621404fcca48eb1f7d8fe Mon Sep 17 00:00:00 2001 From: LoveSy Date: Sun, 8 Jan 2023 17:44:56 +0800 Subject: [PATCH] Refine codes --- .../lsposed/lspd/service/ConfigFileManager.java | 4 +++- .../lspd/service/LSPInjectedModuleService.java | 12 ++++++------ .../org/lsposed/lspd/service/LSPModuleService.java | 14 +++++++------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/daemon/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java b/daemon/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java index 14f4074d..3b8ea9a4 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java @@ -69,6 +69,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.UUID; import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -81,6 +82,7 @@ public class ConfigFileManager { static final Path modulePath = basePath.resolve("modules"); static final Path daemonApkPath = Paths.get(System.getProperty("java.class.path", null)); static final Path managerApkPath = basePath.resolve("manager.apk"); + static final Path dummyPath = Paths.get("/", UUID.randomUUID().toString()); static final File magiskDbPath = new File("/data/adb/magisk.db"); private static final Path lockPath = basePath.resolve("lock"); private static final Path configDirPath = basePath.resolve("config"); @@ -429,7 +431,7 @@ public class ConfigFileManager { return preloadDex; } - static void ensureValidPath(String path) throws RemoteException { + static void ensureModuleFilePath(String path) throws RemoteException { if (path == null || path.indexOf(File.separatorChar) >= 0 || ".".equals(path) || "..".equals(path)) { throw new RemoteException("Invalid path: " + path); } diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java index e1ace243..03ee1118 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java @@ -1,5 +1,6 @@ package org.lsposed.lspd.service; +import static org.lsposed.lspd.service.LSPModuleService.FILES_DIR; import static org.lsposed.lspd.service.PackageService.PER_USER_RANGE; import android.os.Binder; @@ -9,7 +10,6 @@ import android.os.RemoteException; import org.lsposed.lspd.models.Module; -import java.io.File; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -45,11 +45,11 @@ public class LSPInjectedModuleService extends ILSPInjectedModuleService.Stub { @Override public ParcelFileDescriptor openRemoteFile(String path) throws RemoteException { - ConfigFileManager.ensureValidPath(path); + ConfigFileManager.ensureModuleFilePath(path); var userId = Binder.getCallingUid() / PER_USER_RANGE; try { - var dirPath = ConfigFileManager.resolveModuleDir(loadedModule.packageName, "files", userId, -1); - return ParcelFileDescriptor.open(dirPath.resolve(path).toFile(), ParcelFileDescriptor.MODE_READ_ONLY); + var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, -1); + return ParcelFileDescriptor.open(dir.resolve(path).toFile(), ParcelFileDescriptor.MODE_READ_ONLY); } catch (Throwable e) { throw new RemoteException(e.getMessage()); } @@ -57,9 +57,9 @@ public class LSPInjectedModuleService extends ILSPInjectedModuleService.Stub { @Override public String[] getRemoteFileList() throws RemoteException { + var userId = Binder.getCallingUid() / PER_USER_RANGE; try { - var userId = Binder.getCallingUid() / PER_USER_RANGE; - var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, "files", userId, -1); + var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, -1); var files = dir.toFile().list(); return files == null ? new String[0] : files; diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java index 7b333c32..bfb570c8 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java @@ -35,8 +35,6 @@ import androidx.annotation.NonNull; import org.lsposed.daemon.BuildConfig; import org.lsposed.lspd.models.Module; -import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -54,6 +52,8 @@ public class LSPModuleService extends IXposedService.Stub { private final static Set uidSet = ConcurrentHashMap.newKeySet(); private final static Map serviceMap = new WeakHashMap<>(); + public final static String FILES_DIR = "files"; + private final @NonNull Module loadedModule; @@ -226,9 +226,9 @@ public class LSPModuleService extends IXposedService.Stub { @Override public ParcelFileDescriptor openRemoteFile(String path, int mode) throws RemoteException { var userId = ensureModule(); - ConfigFileManager.ensureValidPath(path); + ConfigFileManager.ensureModuleFilePath(path); try { - var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, "files", userId, Binder.getCallingUid()); + var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); return ParcelFileDescriptor.open(dir.resolve(path).toFile(), mode); } catch (Throwable e) { throw new RemoteException(e.getMessage()); @@ -238,9 +238,9 @@ public class LSPModuleService extends IXposedService.Stub { @Override public boolean deleteRemoteFile(String path) throws RemoteException { var userId = ensureModule(); - ConfigFileManager.ensureValidPath(path); + ConfigFileManager.ensureModuleFilePath(path); try { - var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, "files", userId, Binder.getCallingUid()); + var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); return dir.resolve(path).toFile().delete(); } catch (Throwable e) { throw new RemoteException(e.getMessage()); @@ -251,7 +251,7 @@ public class LSPModuleService extends IXposedService.Stub { public String[] listRemoteFiles() throws RemoteException { var userId = ensureModule(); try { - var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, "files", userId, Binder.getCallingUid()); + var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); var files = dir.toFile().list(); return files == null ? new String[0] : files; } catch (Throwable e) {