Merge "Ban setuid or setgid tcpdump on devices." into gingerbread
diff --git a/tests/tests/permission/src/android/permission/cts/NoExecutePermissionTest.java b/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
similarity index 81%
rename from tests/tests/permission/src/android/permission/cts/NoExecutePermissionTest.java
rename to tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
index 5c0a4c3..6450e58 100644
--- a/tests/tests/permission/src/android/permission/cts/NoExecutePermissionTest.java
+++ b/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.permission.cts;
+package android.os.cts;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -29,6 +29,10 @@
 public class NoExecutePermissionTest extends TestCase {
 
     public void testNoExecutePermission() throws FileNotFoundException {
+        if (!cpuHasNxSupport()) {
+            return;
+        }
+
         String heapPermissions = null;
         String stackPermissions = null;
 
@@ -62,4 +66,16 @@
         assertEquals("NX (No Execute) not enabled for heap", "rw-p", heapPermissions);
         assertEquals("NX (No Execute) not enabled for stack", "rw-p", stackPermissions);
     }
+
+    private static boolean cpuHasNxSupport() {
+        if (CpuFeatures.isArmCpu() && !CpuFeatures.isArm7Compatible()) {
+            // ARM processors before v7 do not have NX support.
+            // http://code.google.com/p/android/issues/detail?id=17328
+            return false;
+        }
+
+        // TODO: handle other processors.  For now, assume those processors
+        // have NX support.
+        return true;
+    }
 }