Changed uid output parameter from an int array to a list of strings.
Why?: 1) Returning an array list is unsafe because it must be allocated in Java and C++ must not change the size. 2) List<Integer> is not supported by AIDL, but List<String> is. I decided it was simpler to pass back integers encoded as strings than to create yet another parcelable. Bug: b/119616956 Test: ./list_auth_bound_keys_test.sh Test: Temporarily modified settings app to call listUidsOfAuthBoundKeys Change-Id: I3bf7578c96e800c8d35fba897f52220136dcd657
This commit is contained in:
@ -54,6 +54,7 @@ import java.math.BigInteger;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@ -303,13 +304,14 @@ public class KeyStore {
|
||||
}
|
||||
|
||||
/**
|
||||
* List uids of all keys that are auth bound to the current user.
|
||||
* List uids of all keys that are auth bound to the current user.
|
||||
* Only system is allowed to call this method.
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public int[] listUidsOfAuthBoundKeys() {
|
||||
final int MAX_RESULT_SIZE = 100;
|
||||
int[] uidsOut = new int[MAX_RESULT_SIZE];
|
||||
// uids are returned as a list of strings because list of integers
|
||||
// as an output parameter is not supported by aidl-cpp.
|
||||
List<String> uidsOut = new ArrayList<>();
|
||||
try {
|
||||
int rc = mBinder.listUidsOfAuthBoundKeys(uidsOut);
|
||||
if (rc != NO_ERROR) {
|
||||
@ -323,8 +325,8 @@ public class KeyStore {
|
||||
Log.w(TAG, "KeyStore exception", e);
|
||||
return null;
|
||||
}
|
||||
// Remove any 0 entries
|
||||
return Arrays.stream(uidsOut).filter(x -> x > 0).toArray();
|
||||
// Turn list of strings into an array of uid integers.
|
||||
return uidsOut.stream().mapToInt(Integer::parseInt).toArray();
|
||||
}
|
||||
|
||||
public String[] list(String prefix) {
|
||||
|
Reference in New Issue
Block a user