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

Commit 3a419bee authored by Christopher Tate's avatar Christopher Tate Committed by android-build-merger
Browse files

Merge "Ensure backup doesn't reuse ack tokens nearby in time" into oc-dr1-dev

am: 672f578f

Change-Id: I110ab6b96ac3fd866ace40fbe47614e2ad73a787
parents b7a1be60 672f578f
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -698,6 +698,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
    final SparseArray<Operation> mCurrentOperations = new SparseArray<Operation>();
    final Object mCurrentOpLock = new Object();
    final Random mTokenGenerator = new Random();
    final AtomicInteger mNextToken = new AtomicInteger();
    final SparseArray<AdbParams> mAdbBackupRestoreConfirmations = new SparseArray<AdbParams>();
@@ -770,15 +771,13 @@ public class BackupManagerService implements BackupManagerServiceInterface {
    @GuardedBy("mQueueLock")
    ArrayList<FullBackupEntry> mFullBackupQueue;
    // Utility: build a new random integer token
    // Utility: build a new random integer token.  The low bits are the ordinal of the
    // operation for near-time uniqueness, and the upper bits are random for app-
    // side unpredictability.
    @Override
    public int generateRandomIntegerToken() {
        int token;
        do {
            synchronized (mTokenGenerator) {
                token = mTokenGenerator.nextInt();
            }
        } while (token < 0);
        int token = mTokenGenerator.nextInt() & ~0xFF;
        token |= (mNextToken.incrementAndGet() & 0xFF);
        return token;
    }