tree 1561f304d1d7f92620036bb3cfb63e954d6b8a94
parent e2e7c903029724674b7d1c8839a1b2d1d3711874
author Todd Fiala <tfiala@google.com> 1379795670 -0700
committer Todd Fiala <tfiala@google.com> 1379880195 -0700

Added test to verify run-as command has valid attributes.

This test verifies that the /system/bin/run-as command has the following
properties:

1. It is readable and executable by the file owner and group
2. It is owned by the root user and the group is shell
3. The file has extended attributes for setuid and setgid

This test catches the failure condition that showed up in this bug:
https://code.google.com/p/android/issues/detail?id=58373

Under some conditions, /system/bin/run-as would not have the setuid or
setgid extended attributes set. If that happened, the device would
prevent developers from running the gdb debugger against executables on
the device, rendering native development ineffective. Currently it is
confirmed that doing a system image update over the air (OTA) to Android
4.3 build JWR66Y on Nexus devices will cause this CTS test to fail as
the extended attributes are not applied by the update. As of this
writing, the work-around is to flash the system image over the USB cable
rather than using an OTA update.

This test is designed to catch and prevent this issue from surfacing
again in future releases.

To implement this test, two new native methods were exported from the
java android.permission.cts.FileUtils class:

* public native static boolean hasSetUidCapability(String path)
* public native static boolean hasSetGidCapability(String path)

These methods return true if the filename indicated by path has extended
attributes and has the setuid or setgid permission set, respectively.

A new test has been added to android.permission.cts.FileSystemPermissionTest:
testRunAsHasCorrectCapabilities(). This test implements the test
described at the top of this comment.

It is strongly recommended that vendors run the CTS test suite against
updates applied by OTA mechanisms in addition to over-the-wire system
flashes.

Bug: 10183961
Change-Id: I268fb68d8754bf89f7316892ff8dfbc6d7c31b98
