Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1448962a authored by Rubin Xu's avatar Rubin Xu Committed by Android (Google) Code Review
Browse files

Merge "Guard retrievePreRebootSecurityLogs with config flag" into nyc-dev

parents e37ecbde 0fb6b9e1
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -6150,23 +6150,28 @@ public class DevicePolicyManager {
    /**
     * Called by device owners to retrieve device logs from before the device's last reboot.
     * <p>
     * <strong> The device logs are retrieved from a RAM region which is not guaranteed to be
     * corruption-free during power cycles, due to hardware variations and limitations. As a result,
     * this API is provided as best-effort and the returned logs may be empty or contain corrupted
     * data. </strong>
     * <strong> This API is not supported on all devices. Calling this API on unsupported devices
     * will result in {@code null} being returned. The device logs are retrieved from a RAM region
     * which is not guaranteed to be corruption-free during power cycles, as a result be cautious
     * about data corruption when parsing. </strong>
     * <p>
     * There must be only one user on the device, managed by the device owner. Otherwise a
     * {@link SecurityException} will be thrown.
     *
     * @param admin Which device owner this request is associated with.
     * @return Device logs from before the latest reboot of the system.
     * @return Device logs from before the latest reboot of the system, or {@code null} if this API
     *         is not supported on the device.
     * @throws SecurityException if {@code admin} is not a device owner.
     */
    public List<SecurityEvent> retrievePreRebootSecurityLogs(@NonNull ComponentName admin) {
        throwIfParentInstance("retrievePreRebootSecurityLogs");
        try {
            ParceledListSlice<SecurityEvent> list = mService.retrievePreRebootSecurityLogs(admin);
            if (list != null) {
                return list.getList();
            } else {
                return null;
            }
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
+2 −0
Original line number Diff line number Diff line
@@ -2474,4 +2474,6 @@
         remote provider -->
    <string name="config_tvRemoteServicePackage" translatable="false"></string>

    <!-- True if the device supports persisting security logs across reboots. -->
    <bool name="config_supportPreRebootSecurityLogs">false</bool>
</resources>
+2 −0
Original line number Diff line number Diff line
@@ -2586,4 +2586,6 @@

  <!-- TV Remote Service package -->
  <java-symbol type="string" name="config_tvRemoteServicePackage" />

  <java-symbol type="bool" name="config_supportPreRebootSecurityLogs" />
</resources>
+4 −0
Original line number Diff line number Diff line
@@ -8871,6 +8871,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        Preconditions.checkNotNull(admin);
        ensureDeviceOwnerManagingSingleUser(admin);

        if (!mContext.getResources().getBoolean(R.bool.config_supportPreRebootSecurityLogs)) {
            return null;
        }

        ArrayList<SecurityEvent> output = new ArrayList<SecurityEvent>();
        try {
            SecurityLog.readPreviousEvents(output);