diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-09-10 23:21:03 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-09-10 23:21:03 +0000 |
commit | 30e398d7ba8cabcb71b10bfaf0193e5f061ca65e (patch) | |
tree | 54326e3b168832fe34d393dcd4f709c7a2b000cc | |
parent | 706f708d34d6aaa6f954b4eeffc126da61d0eae3 (diff) | |
parent | 6a947f048a76a5936fd2b693e01f849aef22c907 (diff) | |
download | base-30e398d7ba8cabcb71b10bfaf0193e5f061ca65e.tar.gz |
Merge cherrypicks of [4986743, 4986744, 4987539, 4987168, 4986376, 4986377, 4986378, 4986889, 4986745, 4986746, 4986747, 4986748, 4986749, 4986750, 4986773, 4987169, 4987170, 4987611, 4987631, 4987632, 4987633, 4987634, 4986890, 4987612, 4987651, 4987598, 4987613, 4987614, 4987615, 4987599, 4986379, 4986380, 4987652, 4987653, 4987691, 4986774] into pi-qpr1-release
Change-Id: Idfec2f26918d14afde9ef01367ffb1ecd1dde548
-rw-r--r-- | core/java/android/os/Parcel.java | 10 | ||||
-rw-r--r-- | core/java/android/os/StatsLogEventWrapper.java | 21 | ||||
-rw-r--r-- | core/res/res/values-mcc302-mnc220/config.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-mcc302-mnc221/config.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-mcc302-mnc370/config.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-mcc302-mnc610/config.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-mcc302-mnc640/config.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-mcc302-mnc720/config.xml | 2 | ||||
-rw-r--r-- | core/res/res/values/config.xml | 2 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/permission/BasePermission.java | 5 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionsState.java | 9 |
11 files changed, 36 insertions, 23 deletions
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 514292872e90..460f12510d45 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -835,11 +835,19 @@ public final class Parcel { return; } Set<Map.Entry<String,Object>> entries = val.entrySet(); - writeInt(entries.size()); + int size = entries.size(); + writeInt(size); + for (Map.Entry<String,Object> e : entries) { writeValue(e.getKey()); writeValue(e.getValue()); + size--; } + + if (size != 0) { + throw new BadParcelableException("Map size does not match number of entries!"); + } + } /** diff --git a/core/java/android/os/StatsLogEventWrapper.java b/core/java/android/os/StatsLogEventWrapper.java index d4d3dc838d91..7b3ea57ba0e9 100644 --- a/core/java/android/os/StatsLogEventWrapper.java +++ b/core/java/android/os/StatsLogEventWrapper.java @@ -65,11 +65,17 @@ public final class StatsLogEventWrapper implements Parcelable { public static final Parcelable.Creator<StatsLogEventWrapper> CREATOR = new Parcelable.Creator<StatsLogEventWrapper>() { public StatsLogEventWrapper createFromParcel(Parcel in) { - return new StatsLogEventWrapper(in); + android.util.EventLog.writeEvent(0x534e4554, "112550251", + android.os.Binder.getCallingUid(), ""); + // Purposefully leaving this method not implemented. + throw new RuntimeException("Not implemented"); } public StatsLogEventWrapper[] newArray(int size) { - return new StatsLogEventWrapper[size]; + android.util.EventLog.writeEvent(0x534e4554, "112550251", + android.os.Binder.getCallingUid(), ""); + // Purposefully leaving this method not implemented. + throw new RuntimeException("Not implemented"); } }; @@ -120,10 +126,6 @@ public final class StatsLogEventWrapper implements Parcelable { mStorage.write(bytes, 0, bytes.length); } - private StatsLogEventWrapper(Parcel in) { - readFromParcel(in); - } - /** * Writes the stored fields to a byte array. Will first write a new-line character to denote * END_LIST before writing contents to byte array. @@ -134,13 +136,6 @@ public final class StatsLogEventWrapper implements Parcelable { } /** - * Not implemented. - */ - public void readFromParcel(Parcel in) { - // Not needed since this java class is for sending to statsd only. - } - - /** * Boilerplate for Parcel. */ public int describeContents() { diff --git a/core/res/res/values-mcc302-mnc220/config.xml b/core/res/res/values-mcc302-mnc220/config.xml index 8774334f11be..5343e7cea847 100644 --- a/core/res/res/values-mcc302-mnc220/config.xml +++ b/core/res/res/values-mcc302-mnc220/config.xml @@ -40,7 +40,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=3</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/core/res/res/values-mcc302-mnc221/config.xml b/core/res/res/values-mcc302-mnc221/config.xml index 05896b18cfb8..cb9466be77b6 100644 --- a/core/res/res/values-mcc302-mnc221/config.xml +++ b/core/res/res/values-mcc302-mnc221/config.xml @@ -38,7 +38,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=3</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/core/res/res/values-mcc302-mnc370/config.xml b/core/res/res/values-mcc302-mnc370/config.xml index 1241a9d029d6..b520d5d95a34 100644 --- a/core/res/res/values-mcc302-mnc370/config.xml +++ b/core/res/res/values-mcc302-mnc370/config.xml @@ -41,7 +41,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=2</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/core/res/res/values-mcc302-mnc610/config.xml b/core/res/res/values-mcc302-mnc610/config.xml index 232f14969ad1..650aa62b4a4e 100644 --- a/core/res/res/values-mcc302-mnc610/config.xml +++ b/core/res/res/values-mcc302-mnc610/config.xml @@ -28,7 +28,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=2</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/core/res/res/values-mcc302-mnc640/config.xml b/core/res/res/values-mcc302-mnc640/config.xml index 1d2e625952f8..4bb68dcf04be 100644 --- a/core/res/res/values-mcc302-mnc640/config.xml +++ b/core/res/res/values-mcc302-mnc640/config.xml @@ -24,7 +24,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=2</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/core/res/res/values-mcc302-mnc720/config.xml b/core/res/res/values-mcc302-mnc720/config.xml index ef1ecd29845c..11bfa056d295 100644 --- a/core/res/res/values-mcc302-mnc720/config.xml +++ b/core/res/res/values-mcc302-mnc720/config.xml @@ -43,7 +43,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=2</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index b372d7b767d5..a9d69c1bcbbe 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2784,7 +2784,7 @@ <item>SUPL_PORT=7275</item> <item>SUPL_VER=0x20000</item> <item>SUPL_MODE=1</item> - <item>SUPL_ES=0</item> + <item>SUPL_ES=1</item> <item>LPP_PROFILE=0</item> <item>USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1</item> <item>A_GLONASS_POS_PROTOCOL_SELECT=0</item> diff --git a/services/core/java/com/android/server/pm/permission/BasePermission.java b/services/core/java/com/android/server/pm/permission/BasePermission.java index 1d002efc546f..820258022fd5 100644 --- a/services/core/java/com/android/server/pm/permission/BasePermission.java +++ b/services/core/java/com/android/server/pm/permission/BasePermission.java @@ -39,6 +39,7 @@ import android.util.Slog; import com.android.server.pm.DumpState; import com.android.server.pm.PackageManagerService; +import com.android.server.pm.PackageSetting; import com.android.server.pm.PackageSettingBase; import org.xmlpull.v1.XmlPullParser; @@ -374,8 +375,10 @@ public final class BasePermission { } public void enforceDeclaredUsedAndRuntimeOrDevelopment(PackageParser.Package pkg) { + final PackageSetting pkgSetting = (PackageSetting) pkg.mExtras; + final PermissionsState permsState = pkgSetting.getPermissionsState(); int index = pkg.requestedPermissions.indexOf(name); - if (index == -1) { + if (!permsState.hasRequestedPermission(name) && index == -1) { throw new SecurityException("Package " + pkg.packageName + " has not requested permission " + name); } diff --git a/services/core/java/com/android/server/pm/permission/PermissionsState.java b/services/core/java/com/android/server/pm/permission/PermissionsState.java index 11df380427eb..5e66bfc3cd3e 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionsState.java +++ b/services/core/java/com/android/server/pm/permission/PermissionsState.java @@ -20,9 +20,9 @@ import android.content.pm.PackageManager; import android.os.UserHandle; import android.util.ArrayMap; import android.util.ArraySet; - import android.util.SparseArray; import android.util.SparseBooleanArray; + import com.android.internal.util.ArrayUtils; import java.util.ArrayList; @@ -291,6 +291,13 @@ public final class PermissionsState { } /** + * Returns whether the state has any known request for the given permission name, + * whether or not it has been granted. + */ + public boolean hasRequestedPermission(String name) { + return mPermissions != null && (mPermissions.get(name) != null); + } + /** * Gets all permissions for a given device user id regardless if they * are install time or runtime permissions. * |