Merge "Increase the timeout for the aadb test to 15 minutes." into marshmallow-cts-dev
diff --git a/hostsidetests/devicepolicy/app/WidgetProvider/src/com/android/cts/widgetprovider/SimpleAppWidgetHostService.java b/hostsidetests/devicepolicy/app/WidgetProvider/src/com/android/cts/widgetprovider/SimpleAppWidgetHostService.java
index b5b6003..6b9a2af 100644
--- a/hostsidetests/devicepolicy/app/WidgetProvider/src/com/android/cts/widgetprovider/SimpleAppWidgetHostService.java
+++ b/hostsidetests/devicepolicy/app/WidgetProvider/src/com/android/cts/widgetprovider/SimpleAppWidgetHostService.java
@@ -31,6 +31,7 @@
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
+import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.util.Log;
@@ -58,6 +59,8 @@
     private static final int RESULT_INTERRUPTED = 3;
     private static final int RESULT_TIMEOUT = 4;
 
+    private static final long GET_PROVIDER_TIMEOUT_MILLIS = 30 * 1000; // 30 seconds
+
     public static final String USER_EXTRA = "user-extra";
     public static final String PACKAGE_EXTRA = "package-extra";
     public static final String REPLY_EXTRA = "reply-extra";
@@ -213,8 +216,10 @@
         }
 
         public AppWidgetProviderInfo getProvider(Bundle params) throws InterruptedException {
+            final long startTime = SystemClock.elapsedRealtime();
+            long nextTimeout = GET_PROVIDER_TIMEOUT_MILLIS;
             String packageName = params.getString(PACKAGE_EXTRA);
-            while (mSemaphore.tryAcquire(30, TimeUnit.SECONDS)) {
+            while ((nextTimeout > 0) && mSemaphore.tryAcquire(nextTimeout, TimeUnit.MILLISECONDS)) {
                 mSemaphore.drainPermits();
                 Log.d(TAG, "checking for " + packageName + " " + mUserHandle);
                 synchronized (this) {
@@ -225,6 +230,8 @@
                             return providerInfo;
                         }
                     }
+                    nextTimeout = startTime + GET_PROVIDER_TIMEOUT_MILLIS
+                            - SystemClock.elapsedRealtime();
                 }
             }
             return null;
diff --git a/tests/tests/security/src/android/security/cts/BannedFilesTest.java b/tests/tests/security/src/android/security/cts/BannedFilesTest.java
index 00c4631..83d979d 100644
--- a/tests/tests/security/src/android/security/cts/BannedFilesTest.java
+++ b/tests/tests/security/src/android/security/cts/BannedFilesTest.java
@@ -139,4 +139,15 @@
         assertTrue("File \"" + file + "\" is setUID", (fs.mode & FileUtils.S_ISUID) == 0);
         assertTrue("File \"" + file + "\" is setGID", (fs.mode & FileUtils.S_ISGID) == 0);
     }
+
+    /**
+     * Detect "rootmydevice" vulnerability
+     *
+     * References:
+     *
+     * http://www.theregister.co.uk/2016/05/09/allwinners_allloser_custom_kernel_has_a_nasty_root_backdoor/
+     */
+    public void testNoSunxiDebug() {
+        assertFalse("/proc/sunxi_debug/sunxi_debug", new File("/proc/sunxi_debug/sunxi_debug").exists());
+    }
 }