[tor-commits] [orbot/master] fixes for superuser and iptables check code

n8fr8 at torproject.org n8fr8 at torproject.org
Fri Aug 23 20:59:49 UTC 2013


commit 82fcea0dab3b242047c54b64f1bbfde7e30ec95c
Author: Nathan Freitas <nathan at freitas.net>
Date:   Tue Aug 20 13:25:42 2013 -0400

    fixes for superuser and iptables check code
---
 .../android/service/TorBinaryInstaller.java        |   18 +------
 .../android/service/TorServiceUtils.java           |   53 --------------------
 .../torproject/android/service/TorTransProxy.java  |   23 ++-------
 src/org/torproject/android/wizard/Permissions.java |   17 +++----
 4 files changed, 15 insertions(+), 96 deletions(-)

diff --git a/src/org/torproject/android/service/TorBinaryInstaller.java b/src/org/torproject/android/service/TorBinaryInstaller.java
index ffaeab3..6a6ca8a 100644
--- a/src/org/torproject/android/service/TorBinaryInstaller.java
+++ b/src/org/torproject/android/service/TorBinaryInstaller.java
@@ -253,22 +253,8 @@ public class TorBinaryInstaller implements TorServiceConstants {
 		
 		// Check iptables_g1
 		File file = new File(ctx.getDir("bin",0), "iptables");
-		
-		if ((!file.exists()) && isARMv6()) {
-			copyRawFile(ctx, R.raw.iptables_g1, file, CHMOD_EXEC, false);
-			
-
-			changed = true;
-		}
-		
-		// Check iptables_n1
-		file = new File(ctx.getDir("bin",0), "iptables");
-		if ((!file.exists()) && (!isARMv6())) {
-			copyRawFile(ctx, R.raw.iptables_n1, file, CHMOD_EXEC, false);
-			changed = true;
-		}
-		
-		
+		copyRawFile(ctx, R.raw.iptables, file, CHMOD_EXEC, false);
+				
 		return true;
 	}
 	
diff --git a/src/org/torproject/android/service/TorServiceUtils.java b/src/org/torproject/android/service/TorServiceUtils.java
index e21b745..e9e929e 100644
--- a/src/org/torproject/android/service/TorServiceUtils.java
+++ b/src/org/torproject/android/service/TorServiceUtils.java
@@ -16,59 +16,6 @@ import android.util.Log;
 public class TorServiceUtils implements TorServiceConstants {
 
 	
-	public static boolean isRootPossible()
-	{
-		
-		StringBuilder log = new StringBuilder();
-		
-		try {
-			
-			// Check if Superuser.apk exists
-			File fileSU = new File("/system/app/Superuser.apk");
-			if (fileSU.exists())
-				return true;
-			
-			fileSU = new File("/system/app/superuser.apk");
-			if (fileSU.exists())
-				return true;
-			
-			fileSU = new File("/system/bin/su");
-			if (fileSU.exists())
-			{
-				String[] cmd = {"su"};
-				int exitCode = TorServiceUtils.doShellCommand(cmd, log, false, true);
-				if (exitCode != 0)
-					return false;
-				else
-					return true;
-			}
-			
-			//Check for 'su' binary 
-			String[] cmd = {"which su"};
-			int exitCode = TorServiceUtils.doShellCommand(cmd, log, false, true);
-			
-			if (exitCode == 0) {
-				Log.d(TorConstants.TAG,"root exists, but not sure about permissions");
-		    	 return true;
-		     
-		    }
-		      
-		} catch (IOException e) {
-			//this means that there is no root to be had (normally) so we won't log anything
-			Log.e(TorConstants.TAG,"Error checking for root access",e);
-			
-		}
-		catch (Exception e) {
-			Log.e(TorConstants.TAG,"Error checking for root access",e);
-			//this means that there is no root to be had (normally)
-		}
-		
-		Log.e(TorConstants.TAG,"Could not acquire root permissions");
-		
-		
-		return false;
-	}
-	
 	
 	public static int findProcessId(String command) 
 	{
diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java
index 76741b1..1528f9a 100644
--- a/src/org/torproject/android/service/TorTransProxy.java
+++ b/src/org/torproject/android/service/TorTransProxy.java
@@ -14,7 +14,6 @@ import android.util.Log;
 public class TorTransProxy implements TorServiceConstants {
 	
 	private boolean useSystemIpTables = false;
-	private boolean mBundledFailed = false;
 	private String mSysIptables = null;
 	private TorService mTorService = null;
 	
@@ -35,7 +34,7 @@ public class TorTransProxy implements TorServiceConstants {
 		SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
 		useSystemIpTables = prefs.getBoolean(TorConstants.PREF_USE_SYSTEM_IPTABLES, false);
 		
-		if (useSystemIpTables || mBundledFailed)
+		if (useSystemIpTables)
 		{
 			ipTablesPath = findSystemIPTables();
 		}
@@ -45,19 +44,6 @@ public class TorTransProxy implements TorServiceConstants {
 
 			ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
 			
-			try
-			{
-				if (testOwnerModule(context,ipTablesPath) != 0)
-				{
-					mBundledFailed = true;
-					ipTablesPath = findSystemIPTables();
-				}
-			}
-			catch (Exception e)
-			{
-				ipTablesPath = findSystemIPTables();
-				mBundledFailed = true;
-			}
 		}
 			
 		return ipTablesPath;
@@ -73,14 +59,14 @@ public class TorTransProxy implements TorServiceConstants {
 		{
 		
 			//if the user wants us to use the built-in iptables, then we have to find it
-			File fileIpt = new File("/system/bin/iptables");
+			File fileIpt = new File("/system/xbin/iptables");
 			
 			if (fileIpt.exists())
 				mSysIptables = fileIpt.getAbsolutePath();
 			else
 			{
 			
-				fileIpt = new File("/system/xbin/iptables");
+				fileIpt = new File("/system/bin/iptables");
 				
 				if (fileIpt.exists())
 					mSysIptables = fileIpt.getAbsolutePath();
@@ -201,7 +187,7 @@ public class TorTransProxy implements TorServiceConstants {
 		return code;
 	}
 	*/
-	
+	/*
 	public int testOwnerModule(Context context, String ipTablesPath) throws Exception
 	{
 
@@ -245,6 +231,7 @@ public class TorTransProxy implements TorServiceConstants {
 		
 		return code;
     }	
+	*/
 	
 	public int setTransparentProxyingByApp (Context context, ArrayList<TorifiedApp> apps) throws Exception
 	{
diff --git a/src/org/torproject/android/wizard/Permissions.java b/src/org/torproject/android/wizard/Permissions.java
index b93ba19..91e93db 100644
--- a/src/org/torproject/android/wizard/Permissions.java
+++ b/src/org/torproject/android/wizard/Permissions.java
@@ -2,10 +2,7 @@ package org.torproject.android.wizard;
 
 import org.torproject.android.R;
 import org.torproject.android.TorConstants;
-import org.torproject.android.R.drawable;
-import org.torproject.android.R.id;
-import org.torproject.android.R.layout;
-import org.torproject.android.R.string;
+import org.torproject.android.service.Root;
 import org.torproject.android.service.TorService;
 import org.torproject.android.service.TorServiceUtils;
 import org.torproject.android.service.TorTransProxy;
@@ -22,8 +19,8 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
-import android.widget.ImageView;
 import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -69,7 +66,7 @@ public class Permissions extends Activity implements TorConstants {
 	
 	private void stepThree(){
 		
-		boolean isRootPossible = TorServiceUtils.isRootPossible();
+		boolean isRootPossible = new Root().isDeviceRooted();
 		
 		if (isRootPossible)
 		{
@@ -150,9 +147,8 @@ public class Permissions extends Activity implements TorConstants {
 				
 				if (!hasRoot)
 				{
-				
-					hasRoot = TorServiceUtils.isRootPossible();
-					
+					hasRoot = new Root().isDeviceRooted();
+
 					Editor pEdit = prefs.edit();
 					pEdit.putBoolean(PREF_HAS_ROOT,hasRoot);
 					pEdit.commit();
@@ -162,7 +158,9 @@ public class Permissions extends Activity implements TorConstants {
 				if (hasRoot)
 				{
 					try {
+						/*
 						TorTransProxy ttProxy = new TorTransProxy();
+						
 						int resp = ttProxy.testOwnerModule(context,ttProxy.getIpTablesPath(context));
 						
 						if (resp != 0)
@@ -173,6 +171,7 @@ public class Permissions extends Activity implements TorConstants {
 							Log.i(TorService.TAG,"ERROR: IPTables OWNER module not available");
 							stepFour();
 						}
+						*/
 						
 					} catch (Exception e) {
 						





More information about the tor-commits mailing list