From fd43ac2097fe9104acdeaea23dcd45acce69cbfc Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Fri, 22 Sep 2017 17:21:47 +0100 Subject: Explicitly disallow multiple user execute Explicitly disallow multiple user execution: it's not expected because everything runs as system but this change explicitly rules out execution. Test: Manual testing installing updates as secondary device user Test: PTS: run pts -m PtsTimeZoneTestCases Bug: 64111659 Change-Id: I8cde1dc38061f47fc70821cc44d05372227a1104 --- .../com/android/timezone/updater/RulesCheckReceiver.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/com/android/timezone/updater/RulesCheckReceiver.java b/src/main/com/android/timezone/updater/RulesCheckReceiver.java index 92a8bd5..003b2e4 100644 --- a/src/main/com/android/timezone/updater/RulesCheckReceiver.java +++ b/src/main/com/android/timezone/updater/RulesCheckReceiver.java @@ -30,6 +30,7 @@ import android.content.pm.ProviderInfo; import android.database.Cursor; import android.net.Uri; import android.os.ParcelFileDescriptor; +import android.os.UserHandle; import android.provider.TimeZoneRulesDataContract; import android.util.Log; @@ -85,6 +86,17 @@ public class RulesCheckReceiver extends BroadcastReceiver { + ", action=" + intent.getAction()); return; } + + // The time zone update process should run as the system user exclusively as it's a + // system feature, not user dependent. + UserHandle currentUserHandle = android.os.Process.myUserHandle(); + if (!currentUserHandle.isSystem()) { + // Just do nothing. + Log.w(TAG, "Supposed to be running as the system user," + + " instead running as user=" + currentUserHandle); + return; + } + mRulesManager = (RulesManager) context.getSystemService("timezone"); byte[] token = intent.getByteArrayExtra(RulesUpdaterContract.EXTRA_CHECK_TOKEN); -- cgit v1.2.3