From 239250763422110c073988f4b5dd9d809ebe523d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 19 Jan 2015 16:19:31 +0100 Subject: [PATCH] Accept same set of characters for apk file names for 'pm install' like for package names --- .../fdroid/installer/RootInstaller.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/F-Droid/src/org/fdroid/fdroid/installer/RootInstaller.java b/F-Droid/src/org/fdroid/fdroid/installer/RootInstaller.java index 34e38f781..91dc44254 100644 --- a/F-Droid/src/org/fdroid/fdroid/installer/RootInstaller.java +++ b/F-Droid/src/org/fdroid/fdroid/installer/RootInstaller.java @@ -132,6 +132,16 @@ public class RootInstaller extends Installer { } private void addInstallCommand(File apkFile) { + // Like package names, apk files should also only contain letters, numbers, dots, or underscore, + // e.g., org.fdroid.fdroid_9.apk + if (!isValidPackageName(apkFile.getName())) { + Log.e(TAG, "File name is not valid (contains characters other than letters, numbers, dots, or underscore): " + + apkFile.getName()); + mCallback.onError(InstallerCallback.OPERATION_DELETE, + InstallerCallback.ERROR_CODE_OTHER); + return; + } + rootSession.addCommand("pm install -r \"" + apkFile.getAbsolutePath() + "\"", 0, new Shell.OnCommandResultListener() { public void onCommandResult(int commandCode, int exitCode, List output) { @@ -153,6 +163,14 @@ public class RootInstaller extends Installer { List commands = new ArrayList(); String pm = "pm install -r "; for (File apkFile : apkFiles) { + // see addInstallCommand() + if (!isValidPackageName(apkFile.getName())) { + Log.e(TAG, "File name is not valid (contains characters other than letters, numbers, dots, or underscore): " + + apkFile.getName()); + mCallback.onError(InstallerCallback.OPERATION_DELETE, + InstallerCallback.ERROR_CODE_OTHER); + return; + } commands.add(pm + "\"" + apkFile.getAbsolutePath() + "\""); } @@ -177,7 +195,8 @@ public class RootInstaller extends Installer { private void addDeleteCommand(String packageName) { if (!isValidPackageName(packageName)) { - Log.e(TAG, "Package name is not valid (contains characters other than letters, numbers, dots, or underscore): " + packageName); + Log.e(TAG, "Package name is not valid (contains characters other than letters, numbers, dots, or underscore): " + + packageName); mCallback.onError(InstallerCallback.OPERATION_DELETE, InstallerCallback.ERROR_CODE_OTHER); return;