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

Commit 615f824f authored by Eric Biggers's avatar Eric Biggers Committed by Automerger Merge Worker
Browse files

Remove checks for FDE in 'adb backup' am: bd03d760

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2016255

Change-Id: If8b040dc0a580497bd2b84fa9844cd41d20b669b
parents a9febdf1 bd03d760
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -44,8 +44,6 @@
    <string name="backup_enc_password_text">Please enter a password to use for encrypting the full backup data. If this is left blank, your current backup password will be used:</string>
    <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
    <string name="backup_enc_password_optional">If you wish to encrypt the full backup data, enter a password below:</string>
    <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
    <string name="backup_enc_password_required">Since your device is encrypted, you are required to encrypt your backup. Please enter a password below:</string>

    <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
    <string name="restore_enc_password_text">If the restore data is encrypted, please enter the password below:</string>
+2 −28
Original line number Diff line number Diff line
@@ -27,8 +27,6 @@ import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.storage.IStorageManager;
import android.os.storage.StorageManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Slog;
@@ -66,10 +64,8 @@ public class BackupRestoreConfirmation extends Activity {

    Handler mHandler;
    IBackupManager mBackupManager;
    IStorageManager mStorageManager;
    FullObserver mObserver;
    int mToken;
    boolean mIsEncrypted;
    boolean mDidAcknowledge;
    String mAction;

@@ -144,7 +140,6 @@ public class BackupRestoreConfirmation extends Activity {
        }

        mBackupManager = IBackupManager.Stub.asInterface(ServiceManager.getService(Context.BACKUP_SERVICE));
        mStorageManager = IStorageManager.Stub.asInterface(ServiceManager.getService("mount"));

        mHandler = new ObserverHandler(getApplicationContext());
        final Object oldObserver = getLastNonConfigurationInstance();
@@ -248,23 +243,16 @@ public class BackupRestoreConfirmation extends Activity {
            mDenyButton.setEnabled(!mDidAcknowledge);
        }

        // We vary the password prompt depending on whether one is predefined, and whether
        // the device is encrypted.
        mIsEncrypted = deviceIsEncrypted();
        // We vary the password prompt depending on whether one is predefined.
        if (!haveBackupPassword()) {
            curPwDesc.setVisibility(View.GONE);
            mCurPassword.setVisibility(View.GONE);
            if (layoutId == R.layout.confirm_backup) {
                TextView encPwDesc = findViewById(R.id.enc_password_desc);
                if (mIsEncrypted) {
                    encPwDesc.setText(R.string.backup_enc_password_required);
                    monitorEncryptionPassword();
                } else {
                encPwDesc.setText(R.string.backup_enc_password_optional);
            }
        }
    }
    }

    private void monitorEncryptionPassword() {
        mAllowButton.setEnabled(false);
@@ -312,20 +300,6 @@ public class BackupRestoreConfirmation extends Activity {
        }
    }

    boolean deviceIsEncrypted() {
        try {
            return mStorageManager.getEncryptionState()
                     != StorageManager.ENCRYPTION_STATE_NONE
                && mStorageManager.getPasswordType()
                     != StorageManager.CRYPT_TYPE_DEFAULT;
        } catch (Exception e) {
            // If we can't talk to the storagemanager service we have a serious problem; fail
            // "secure" i.e. assuming that the device is encrypted.
            Slog.e(TAG, "Unable to communicate with storagemanager service: " + e.getMessage());
            return true;
        }
    }

    boolean haveBackupPassword() {
        try {
            return mBackupManager.hasBackupPassword();
+0 −25
Original line number Diff line number Diff line
@@ -89,8 +89,6 @@ import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.WorkSource;
import android.os.storage.IStorageManager;
import android.os.storage.StorageManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.ArraySet;
@@ -336,7 +334,6 @@ public class UserBackupManagerService {
    private final ActivityManagerInternal mActivityManagerInternal;
    private PowerManager mPowerManager;
    private final AlarmManager mAlarmManager;
    private final IStorageManager mStorageManager;
    private final BackupManagerConstants mConstants;
    private final BackupWakeLock mWakelock;
    private final BackupHandler mBackupHandler;
@@ -567,7 +564,6 @@ public class UserBackupManagerService {
        mBackupPasswordManager = null;
        mPackageManagerBinder = null;
        mActivityManager = null;
        mStorageManager = null;
        mBackupManagerBinder = null;
        mScheduledBackupEligibility = null;
    }
@@ -591,7 +587,6 @@ public class UserBackupManagerService {

        mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        mStorageManager = IStorageManager.Stub.asInterface(ServiceManager.getService("mount"));

        Objects.requireNonNull(parent, "parent cannot be null");
        mBackupManagerBinder = BackupManagerService.asInterface(parent.asBinder());
@@ -2252,26 +2247,6 @@ public class UserBackupManagerService {
        }
    }

    /** For adb backup/restore. */
    public boolean deviceIsEncrypted() {
        try {
            return mStorageManager.getEncryptionState()
                    != StorageManager.ENCRYPTION_STATE_NONE
                    && mStorageManager.getPasswordType()
                    != StorageManager.CRYPT_TYPE_DEFAULT;
        } catch (Exception e) {
            // If we can't talk to the storagemanager service we have a serious problem; fail
            // "secure" i.e. assuming that the device is encrypted.
            Slog.e(
                    TAG,
                    addUserIdToLogMessage(
                            mUserId,
                            "Unable to communicate with storagemanager service: "
                                    + e.getMessage()));
            return true;
        }
    }

    // ----- Full-data backup scheduling -----

    /**
+0 −6
Original line number Diff line number Diff line
@@ -316,12 +316,6 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor
        try {
            boolean encrypting = (mEncryptPassword != null && mEncryptPassword.length() > 0);

            // Only allow encrypted backups of encrypted devices
            if (mUserBackupManagerService.deviceIsEncrypted() && !encrypting) {
                Slog.e(TAG, "Unencrypted backup of encrypted device; aborting");
                return;
            }

            OutputStream finalOutput = ofstream;

            // Verify that the given password matches the currently-active