Commit Graph

53558 Commits

Author SHA1 Message Date
Chiachang Wang
dadbab8ae8 Merge "Stop using invalid URL to prevent unexpected crash" into qt-dev am: 3ac8d1dc2f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18715266

Change-Id: Ia7d1ef07c32c791d71c7bd4561641620aaa66de1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-06-08 01:58:13 +00:00
chiachangwang
6d6f410694 Stop using invalid URL to prevent unexpected crash
Verify the input PAC Uri before performing follow-up actions.

Check if the URL is a valid URL to filter some invalid URLs since
these invalid URLs could not fall into any subclass of existing
URLConnections. When the PAC Uri is other invalid URL scheme, it
will cause an UnsupportedOperationException if there is no proper
subclass that implements the openConnection() method.
A malformed URL may crash the system.

Even it's a valid URL, some subclasses(e.g. JarURLConnection)
may not have openConnection() implemented. It will also hit the
problem, so convert the possbile exception from openConnection()
to re-throw it to IOException which is handled in the existing
code.

Bug: 219498290
Test: atest FrameworksNetTests CtsNetTestCases
Test: Test with malformed URL
Merged-In: I22903414380b62051f514e43b93af992f45740b4
Merged-In: I2abff75ec59a17628ef006aad348c53fadbed076
Change-Id: I4d6cec1da9cf3f70dec0dcf4223254d3da4f30a3
(cherry picked from commit 6390b37a3b)
2022-06-06 02:03:41 +00:00
Wenhao Wang
8bb5e98ecb Revert "[conflict] Move service initialization am: 38fe45b539"
This reverts commit 012cace2ee.

Reason for revert: This CL depends on ag/17823648, which is not merged into qt-qpr1-dev.

Change-Id: I503bcc1e979dd4db941cb7754f63a0dc35ce9682
2022-05-30 05:30:08 +00:00
Julia Reynolds
012cace2ee [conflict] Move service initialization am: 38fe45b539
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18563202

Change-Id: If27ee7e26bcf2797a6a4a770f2a5064605cdeaa0
Merged-In: I2f9f9bdba37f4ebfaea56c1a6662f0474ae8a002
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-27 15:24:30 +00:00
Julia Reynolds
38fe45b539 Move service initialization
Occasionally ILockSettings can fail to be initialized otherwise
Fixes: 232714129
Test: boot (and eventually bootstress/reboot-long)

Change-Id: I2f9f9bdba37f4ebfaea56c1a6662f0474ae8a002
Merged-In: I2f9f9bdba37f4ebfaea56c1a6662f0474ae8a002
(cherry picked from commit 8e278543bd)
2022-05-23 16:03:12 -07:00
Julia Reynolds
bf6983a9ea DO NOT MERGE Crash invalid FGS notifications am: b6b2906ea6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17864291

Change-Id: I57b968cab49f7d3eef8028ea92d571d5b68489e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-12 20:23:46 +00:00
TreeHugger Robot
e7da6dd26e Merge "DO NOT MERGE Crash invalid FGS notifications" into qt-dev 2022-05-12 19:50:55 +00:00
Victor Berchet
a492c2f2d9 Revert "[conflict] DO NOT MERGE Suppress notifications when device enter lockdown am: 85c00b98a6"
This reverts commit 1ca6f8ddb8.

Reason for revert: DroidMonitor: Potential culprit for Bug 231171562 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Change-Id: Ib5819de2ce4e60deae5676eed9947cbbb759be10
2022-05-02 20:29:01 +00:00
Wenhao Wang
1ca6f8ddb8 [conflict] DO NOT MERGE Suppress notifications when device enter lockdown am: 85c00b98a6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17823648

Change-Id: I248486e7eb6210ba54b30276cfce15a18dc5f9bd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-28 21:00:00 +00:00
Wenhao Wang
248bbf2dca Merge "DO NOT MERGE Suppress notifications when device enter lockdown" into qt-dev 2022-04-28 19:44:46 +00:00
Wenhao Wang
85c00b98a6 DO NOT MERGE Suppress notifications when device enter lockdown
This CL makes the following modifcations:
1. Add LockPatternUtils.StrongAuthTracker to monitor
the lockdown mode status of the phone.
2. Call mListeners.notifyRemovedLocked with all the
notifications in the mNotificationList when entering
the lockdown mode.
3. Call mListeners.notifyPostedLocked with all the
notifications in the mNotificationList when exiting
the lockdown mode.
4. Dismiss the function calls of notifyPostedLocked,
notifyRemovedLocked, and notifyRankingUpdateLocked
during the lockdown mode.

The CL also adds corresponding tests.

Bug: 173721373
Test: atest NotificationManagerServiceTest
Test: atest NotificationListenersTest
Test: manually verify the paired device cannot receive
notifications when the host phone is in lockdown mode.
Ignore-AOSP-First: pending fix for a security issue.

Change-Id: I7e83544863eeadf8272b6ff8a9bb8136d6466203
Merged-In: I7e83544863eeadf8272b6ff8a9bb8136d6466203
(cherry picked from commit 3cb6842a05)
2022-04-25 15:29:35 -07:00
Eric Biggers
51fbb8e819 [RESTRICT AUTOMERGE] Log to EventLog on prepareUserStorage failure am: 2f2e7d84f8
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17452585

Change-Id: Ibb1049aa4c143ba2d4e04a021cb2546519a1996e
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 18:05:06 +00:00
Eric Biggers
7271432de9 [RESTRICT AUTOMERGE] Ignore errors preparing user storage for existing users am: 493aa93b84
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17416381

Change-Id: Ic637e5b26c0bb2561497dfb7ba1cf5300bd6af99
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 18:05:04 +00:00
Eric Biggers
6976474816 [RESTRICT AUTOMERGE] UserDataPreparer: reboot to recovery for system user only am: a296a2b724
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17416380

Change-Id: Idb8510091bb7e626d037f2245805ed6daa9af64e
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 18:04:44 +00:00
Eric Biggers
245e455114 [RESTRICT AUTOMERGE] UserDataPreparer: reboot to recovery if preparing user storage fails am: ea010f3dd2
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17416379

Change-Id: Ie98301125accca1074aa5f7e4ea4f51cfdbd8cd7
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 18:04:30 +00:00
Eric Biggers
9d4c8b604a [RESTRICT AUTOMERGE] StorageManagerService: don't ignore failures to prepare user storage am: f80dd3ecd4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17416378

Change-Id: If7e2bb688e37a55b874d25f4e1621f3998b4d9af
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 18:04:16 +00:00
Guo Li
5f72388c49 Check user unlocked before write to /data/system_ce/0/snapshots am: 3ab9dc113e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17415776

Change-Id: I6d083a2930244ee65e5f17d2d61e1f9e0884d94e
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 18:04:01 +00:00
Eric Biggers
a318c254f7 Merge changes from topic "unencrypted-dirs-q" into qt-dev
* changes:
  [RESTRICT AUTOMERGE] Log to EventLog on prepareUserStorage failure
  [RESTRICT AUTOMERGE] Ignore errors preparing user storage for existing users
  [RESTRICT AUTOMERGE] UserDataPreparer: reboot to recovery for system user only
  [RESTRICT AUTOMERGE] UserDataPreparer: reboot to recovery if preparing user storage fails
  [RESTRICT AUTOMERGE] StorageManagerService: don't ignore failures to prepare user storage
  Check user unlocked before write to /data/system_ce/0/snapshots
2022-04-25 17:11:39 +00:00
Julia Reynolds
b6b2906ea6 DO NOT MERGE Crash invalid FGS notifications
Test: CTS, ActivityManagerProcessStateTest
Fixes: 191981182
Change-Id: I13a0202b25c8118db47edba11a93c1939c94b392
Merged-In: I13a0202b25c8118db47edba11a93c1939c94b392
(cherry picked from commit 6f657f8f5b)
2022-04-20 18:16:44 +00:00
JW Wang
f562aadd77 Fix NPE
NPE happens when there is an orphaned session which we've
tried to prevent in all cases.

Log an error message if this situation happens.

Bug: 227342978
Test: atest CtsRootPackageInstallerHostTestCases
Change-Id: Ia21323926bd9db1a6f05461904deb45b4c3dd0bc
(cherry picked from commit 07e31dfb1e)
Merged-In: Ia21323926bd9db1a6f05461904deb45b4c3dd0bc
2022-04-05 19:50:59 +00:00
Oli Lan
9b7e9a00b8 RESTRICT AUTOMERGE Prevent non-admin users from deleting system apps. am: a7621e0ce0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17400663

Change-Id: I7be9a10eaa67ba96c3ef905fbb3a88b3ce6d44b5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-03-30 18:51:51 +00:00
Oli Lan
a7621e0ce0 RESTRICT AUTOMERGE Prevent non-admin users from deleting system apps.
This addresses a security issue where the guest user can remove updates
for system apps.

With this CL, attempts to uninstall/downgrade system apps will fail if
attempted by a non-admin user.

This is a backport of ag/17352264.

Bug: 170646036
Test: manual, try uninstalling system app update as guest
Change-Id: I5bbaaf83d035c500bfc02ff4b9b0e7fb1e7c2feb
Merged-In: I4e959e296cca9bbdfc8fccc5e5e0e654ca524165
2022-03-30 14:02:19 +00:00
Eric Biggers
2f2e7d84f8 [RESTRICT AUTOMERGE] Log to EventLog on prepareUserStorage failure
Bug: 224585613
Change-Id: Id6dfb4f4c48d5cf4e71f54bdb6d0d6eea527caf5
(cherry picked from commit fbb632ea95)
Merged-In: Id6dfb4f4c48d5cf4e71f54bdb6d0d6eea527caf5
2022-03-29 20:53:11 +00:00
Eric Biggers
493aa93b84 [RESTRICT AUTOMERGE] Ignore errors preparing user storage for existing users
Unfortunately we can't rule out the existence of devices where the user
storage wasn't properly prepared, due to StorageManagerService
previously ignoring errors from mVold.prepareUserStorage, combined with
OEMs potentially creating files in per-user directories too early.  And
forcing these broken devices to be factory reset upon taking an OTA is
not currently considered to be acceptable.

One option is to only check for prepareUserStorage errors on devices
that launched with T or later.  However, this is a serious issue and it
would be strongly preferable to do more than that.

Therefore, this CL makes it so that errors are checked for all new
users, rather than all new devices.  A field ignorePrepareStorageErrors
is added to the user record; it is only ever set to true implicitly,
when reading a user record from disk that lacks this field.  This field
is used by StorageManagerService to decide whether to check for errors.

Bug: 164488924
Bug: 224585613
Test: Intentionally made a device affected by this issue by reverting
      the CLs that introduced the error checks, and changing vold to
      inject an error into prepareUserStorage.   Then, flashed a build
      with this CL without wiping userdata.  The device still boots, as
      expected, and the log shows that the error was intentionally
      ignored.  Tested that if a second user is added, the error is
      *not* ignored and the second user's storage is destroyed before it
      can be used.  Finally, wiped the device and verified that it won't
      boot up anymore, as expected since error checking is enabled for
      the system user in that case.
Change-Id: I9bdd1a4bf5b14542adb901f264a91d489115c89b
(cherry picked from commit 60d8318c47)
Merged-In: I9bdd1a4bf5b14542adb901f264a91d489115c89b
2022-03-29 20:52:58 +00:00
Eric Biggers
a296a2b724 [RESTRICT AUTOMERGE] UserDataPreparer: reboot to recovery for system user only
With the next CL, old devices might contain a combination of old users
with prepareUserStorage error checking disabled and new users with
prepareUserStorage error checking enabled.  Factory resetting the whole
device when any user fails to prepare may be too aggressive.  Also,
UserDataPreparer already destroys the affected user's storage when it
fails to prepare, which seems to be fairly effective at breaking things
for that user (absent proper error handling by upper layers).

Therefore, let's only factory reset the device if the failing user is
the system user.

Bug: 164488924
Bug: 224585613
Change-Id: Ia1db01ab4ec6b3b17d725f391c3500d92aa00f97
(cherry picked from commit 4c76da76c9)
Merged-In: Ia1db01ab4ec6b3b17d725f391c3500d92aa00f97
2022-03-29 20:52:56 +00:00
Eric Biggers
ea010f3dd2 [RESTRICT AUTOMERGE] UserDataPreparer: reboot to recovery if preparing user storage fails
StorageManager.prepareUserStorage() can throw an exception if a
directory cannot be encrypted, for example due to already being
nonempty.  In this case, usage of the directory must not be allowed to
proceed.  UserDataPreparer currently handles this by deleting the user's
directories, but the error is still ultimately suppressed and starting
the user is still allowed to proceed.

The correct behavior in this case is to reboot into recovery to ask the
user to factory reset the device.  This is already what happens when
'init' fails to encrypt a directory with the system DE policy.  However,
this was overlooked for the user directories.  Start doing this.

Bug: 164488924
Bug: 224585613
Change-Id: Ib5e91d2510b25780d7a161b91b5cee2f6f7a2e54
(cherry picked from commit 5256365e65)
Merged-In: Ib5e91d2510b25780d7a161b91b5cee2f6f7a2e54
2022-03-29 20:52:53 +00:00
Eric Biggers
f80dd3ecd4 [RESTRICT AUTOMERGE] StorageManagerService: don't ignore failures to prepare user storage
We must never leave directories unencrypted.

Bug: 164488924
Bug: 224585613
Change-Id: I9a38ab5cca1ae9c9ebff81fca04615fd83ebe4b2
(cherry picked from commit 50946dd15f)
Merged-In: I9a38ab5cca1ae9c9ebff81fca04615fd83ebe4b2
2022-03-29 20:52:43 +00:00
Guo Li
3ab9dc113e Check user unlocked before write to /data/system_ce/0/snapshots
When reboot device. TaskSnapshotPersister create directory
"/data/system_ce/0/snapshots" before FBE decrypt.
Then WTF occur.

Bug: 154787951
Bug: 224585613
Test: Device boots without WTF error
Change-Id: Ie9d4a28008adc93e27bc8ab015a3a6507428c3e4
(cherry picked from commit 2f9987f507)
Merged-In: Ie9d4a28008adc93e27bc8ab015a3a6507428c3e4
2022-03-28 19:25:16 +00:00
Julia Reynolds
db048de08d DO NOT MERGE Add an OEM configurable limit for zen rules am: 3072d98c2d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17045726

Change-Id: Id5f8b8657848ebdff6a057cf296d87d46f5e7677
2022-03-22 20:32:15 +00:00
TreeHugger Robot
81f051eff4 Merge "DO NOT MERGE Add an OEM configurable limit for zen rules" into qt-dev 2022-03-22 20:12:47 +00:00
Julia Reynolds
3072d98c2d DO NOT MERGE Add an OEM configurable limit for zen rules
Test: ZenModeHelperTest
Bug: 220735360
Change-Id: I3da105951af90007bf48dc6cf00aed3e28778b36
Merged-In: I3da105951af90007bf48dc6cf00aed3e28778b36
2022-03-22 14:36:52 +00:00
TreeHugger Robot
972089ad30 Merge "Always restart apps if base.apk gets updated." into qt-dev am: 1adea76f46
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17111536

Change-Id: Ia35c96940c76b46ff5754f493e4f0c64df211483
2022-03-09 06:21:41 +00:00
TreeHugger Robot
1adea76f46 Merge "Always restart apps if base.apk gets updated." into qt-dev 2022-03-09 06:09:58 +00:00
TreeHugger Robot
b4fb5feffc Merge "Verify caller before auto granting slice permission" into qt-dev am: 3d226b76c1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17089346

Change-Id: I20932910644a9d4ca4b3a46c4e4b9f96d504adf6
2022-03-09 06:08:50 +00:00
TreeHugger Robot
3d226b76c1 Merge "Verify caller before auto granting slice permission" into qt-dev 2022-03-09 05:41:31 +00:00
Alex Buynytskyy
a5dd59db6d Always restart apps if base.apk gets updated.
Bug: 219044664
Fixes: 219044664
Test: atest PackageManagerShellCommandTest
Change-Id: I27a0c5009b2d5f1ea51618b9acfa1e6ccee71296
Merged-In: I27a0c5009b2d5f1ea51618b9acfa1e6ccee71296
2022-03-09 00:48:11 +00:00
Jeff Chang
72aa97e7eb [RESTRICT AUTOMERGE] Do not resume activity if behind a translucent task am: f2d4787451
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16812573

Change-Id: I1e4c3d42668d5f6459f4a07436edb7ff46f3e90f
2022-03-07 06:00:36 +00:00
TreeHugger Robot
88bdf80af8 Merge "[RESTRICT AUTOMERGE] Do not resume activity if behind a translucent task" into qt-dev 2022-03-07 05:40:46 +00:00
Pinyao Ting
3c92d74d7d Verify caller before auto granting slice permission
Currently SliceManagerService#checkSlicePermission does not verify the
caller's identity. This leads to a security vulnerability because
checkSlicePermission does more than checking the permission as opposed
to simply return a boolean value -- it additionally grants slice access
under a certain condition. A malicious app can spoof the calling package
to acquire slice access.

This CL verifies the caller before granting slice access.

Bug: 208232850, 179699767
Test: manual
Change-Id: I2539c9ff5ea977c91bb58185c95280b4d533a520
Merged-In: I2539c9ff5ea977c91bb58185c95280b4d533a520
(cherry picked from commit 5bd2196c53)
2022-03-05 05:02:49 +00:00
Julia Reynolds
4d7ca1dbce Filter notification APIs by user
Specifically getActiveNotifications and
getHistoricalNotifications

Test: atest NotificationManagerServiceTest
Bug: 214999128
Change-Id: I2eba0a592fa33ed25e1ac3919f1b2631e5db4258
Merged-In: I2eba0a592fa33ed25e1ac3919f1b2631e5db4258
2022-02-16 16:46:32 +00:00
Jeff Chang
f2d4787451 [RESTRICT AUTOMERGE] Do not resume activity if behind a translucent task
The top-focusable activity resides in the RESUMED state while the app
process is newly created and attached. The behavior may enable UI
hijacking attacks against apps implementing authentication.

This CL disallows the system to resume the activity for the case if it
is not visible or is occluded by other translucent tasks.

Bug: 211481342
Test: atest CtsWindowManagerDeviceTestCases:ActivityLifecycleTests
Change-Id: I7903494cf928b5b5613700262b7c5fff10f3c5a0
2022-02-08 18:04:03 +08:00
Julia Reynolds
b993531c0d DO NOT MERGE Prevent apps from creating blocked channel groups
setBlocked is a hidden API, so apps should not be calling
the method, but fix up the data in case they do

Test: PreferencesHelperTest; manual with ApiDemos FGS
Bug: 209966086
Change-Id: Icc709a6b0d0a8c5f2d9243959992f1b6764354db
Merged-In: I8a27853c7ed05d9dfd38a3142fbbe185946c3992
2022-01-20 16:42:59 +00:00
Julia Reynolds
450617d4fb Prevent apps from creating blocked channel groups
setBlocked is a hidden API, so apps should not be calling
the method, but fix up the data in case they do

Test: PreferencesHelperTest; manual with ApiDemos FGS
Bug: 209966086
Change-Id: Icc709a6b0d0a8c5f2d9243959992f1b6764354db
Merged-In: I8a27853c7ed05d9dfd38a3142fbbe185946c3992
2022-01-13 13:32:57 +00:00
Julia Reynolds
138f4633c3 Check group channels for FGSes
Before allowing the group to be deleted, by updating
the current check to the method that populates the channel
list

Test: NotificationManagerServiceTest
Bug: 209965481
Change-Id: I9db781c300e96e9c80bd5d21585b8be9b4db08c8
Merged-In: I9db781c300e96e9c80bd5d21585b8be9b4db08c8
(cherry picked from commit 331b617949)
2022-01-12 14:26:18 +00:00
Jeff Chang
a9acc6ae3a [RESTRICT AUTOMERGE]Only allow system and same app to apply relinquishTaskIdentity am: cd1f9e72cf
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16564590

Change-Id: I92f4fa6032291031c3ab05f4e8518199c5545954
2022-01-12 10:38:33 +00:00
TreeHugger Robot
768bf858bb Merge "[RESTRICT AUTOMERGE]Only allow system and same app to apply relinquishTaskIdentity" into qt-dev 2022-01-12 10:25:27 +00:00
Songchun Fan
ca4faab256 Merge "Persist destroyed staged sessions until they are cleaned up" into qt-dev am: 30348d5cdc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16575908

Change-Id: I4b67d39d39b3592139235e3375edf5c408795e79
2022-01-12 02:31:29 +00:00
Songchun Fan
30348d5cdc Merge "Persist destroyed staged sessions until they are cleaned up" into qt-dev 2022-01-11 23:31:01 +00:00
Songchun Fan
5bf4a3f29e Merge "Don't abandon child sessions (1/n)" into qt-dev 2022-01-11 23:31:01 +00:00
Mohammad Samiul Islam
6151941007 Persist destroyed staged sessions until they are cleaned up
Currently, when we abandon a staged session we mark it as destroyed and
then immediately clean it up. Cleaning up a staged session immediately
causes racing condition with pre-reboot verification.

In order to avoid the racing condition, we want to delay cleanup of
staged session until it is safe to do so. This means, the system will
be carrying around destroyed staged sessions internally.

Since there is now a gap between when a session is destroyed and when it
is cleaned up, the user can reboot in this window. As such, we need to
persist the mDestroyed field of session so that we know session is
destroyed after reboot and act accordingly.

Also, once a session is destroyed, theoretically it doesn't exist.
Carrying it around internally is an implementation details which
shouldn't be exposed externally. As such, we filter out destroyed
sessions before surfacing them to users.

Bug: 145925842
Bug: 67862680
Test: atest PackageInstallerSessionTest
Test: atest StagedInstallTest
Change-Id: I4ede6b7a4b5d861e5c73f13884c7aa86cf7633a2
Merged-In: I4ede6b7a4b5d861e5c73f13884c7aa86cf7633a2
(cherry picked from commit 731bd965fb)
2022-01-11 22:54:46 +00:00