Prevent root tasks if no root access

This commit is contained in:
topjohnwu 2017-01-10 22:47:58 +08:00
parent 742055c43b
commit cadab12737
3 changed files with 21 additions and 28 deletions

View File

@ -144,8 +144,12 @@ public class MainActivity extends AppCompatActivity
Menu menu = navigationView.getMenu(); Menu menu = navigationView.getMenu();
menu.findItem(R.id.magiskhide).setVisible(StatusFragment.magiskVersion > 0 && menu.findItem(R.id.magiskhide).setVisible(StatusFragment.magiskVersion > 0 &&
prefs.getBoolean("magiskhide", false) && Shell.rootAccess()); prefs.getBoolean("magiskhide", false) && Shell.rootAccess());
menu.findItem(R.id.modules).setVisible(StatusFragment.magiskVersion > 0); menu.findItem(R.id.modules).setVisible(StatusFragment.magiskVersion > 0 &&
menu.findItem(R.id.downloads).setVisible(StatusFragment.magiskVersion > 0); Shell.rootAccess());
menu.findItem(R.id.downloads).setVisible(StatusFragment.magiskVersion > 0 &&
Shell.rootAccess());
menu.findItem(R.id.log).setVisible(Shell.rootAccess());
menu.findItem(R.id.install).setVisible(Shell.rootAccess());
} }
public void navigate(final int itemId) { public void navigate(final int itemId) {

View File

@ -36,6 +36,7 @@ public class Async {
public abstract static class RootTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { public abstract static class RootTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
@SafeVarargs @SafeVarargs
public final void exec(Params... params) { public final void exec(Params... params) {
if (!Shell.rootAccess()) return;
executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, params); executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, params);
} }
} }
@ -126,7 +127,6 @@ public class Async {
@Override @Override
protected Void doInBackground(Void... voids) { protected Void doInBackground(Void... voids) {
if (! Shell.rootAccess()) return null;
MagiskHideFragment.hideList.clear(); MagiskHideFragment.hideList.clear();
MagiskHideFragment.fListApps.clear(); MagiskHideFragment.fListApps.clear();
MagiskHideFragment.listApps = pm.getInstalledApplications(PackageManager.GET_META_DATA); MagiskHideFragment.listApps = pm.getInstalledApplications(PackageManager.GET_META_DATA);
@ -240,27 +240,20 @@ public class Async {
return -1; return -1;
} }
if (!unzipAndCheck()) return 0; if (!unzipAndCheck()) return 0;
if (Shell.rootAccess()) { publishProgress(mContext.getString(R.string.zip_install_progress_msg, mFilename));
publishProgress(mContext.getString(R.string.zip_install_progress_msg, mFilename)); ret = Shell.su(
ret = Shell.su( "BOOTMODE=true sh " + mCachedFile.getParent() +
"BOOTMODE=true sh " + mCachedFile.getParent() + "/META-INF/com/google/android/update-binary dummy 1 " + mCachedFile.getPath(),
"/META-INF/com/google/android/update-binary dummy 1 " + mCachedFile.getPath(), "if [ $? -eq 0 ]; then echo true; else echo false; fi"
"if [ $? -eq 0 ]; then echo true; else echo false; fi" );
); Logger.dev("FlashZip: Console log:");
Logger.dev("FlashZip: Console log:"); for (String line : ret) {
for (String line : ret) { Logger.dev(line);
Logger.dev(line);
}
Shell.su(
"rm -rf " + mCachedFile.getParent() + "/*",
"rm -rf " + TMP_FOLDER_PATH
);
} else {
if (mCachedFile != null && mCachedFile.exists() && !mCachedFile.delete()) {
Utils.removeItem(mCachedFile.getPath());
}
return -1;
} }
Shell.su(
"rm -rf " + mCachedFile.getParent() + "/*",
"rm -rf " + TMP_FOLDER_PATH
);
if (Boolean.parseBoolean(ret.get(ret.size() - 1))) { if (Boolean.parseBoolean(ret.get(ret.size() - 1))) {
return 1; return 1;
} }

View File

@ -74,11 +74,7 @@ public class Utils {
public static List<String> getModList(String path) { public static List<String> getModList(String path) {
List<String> ret; List<String> ret;
String command = "find " + path + " -type d -maxdepth 1 ! -name \"*.core\" ! -name \"*lost+found\" ! -name \"*magisk\""; String command = "find " + path + " -type d -maxdepth 1 ! -name \"*.core\" ! -name \"*lost+found\" ! -name \"*magisk\"";
if (Shell.rootAccess()) { ret = Shell.su(command);
ret = Shell.su(command);
} else {
ret = Shell.sh(command);
}
return ret; return ret;
} }