From 01af5431f7b4353706527477aaa3118476e5b8a2 Mon Sep 17 00:00:00 2001 From: Akilesh Kailash Date: Tue, 5 Nov 2024 22:22:12 -0800 Subject: [PATCH] snapuserd: typecast cow_op->new_block to uint64_t On 32-bit devices, cow_op->new_block * BLOCK_SZ can overflow. Bug: 376978542 Test: snapuserd_test on 32-bit device 1: Initiate merge on partition > 4GB. 2: Verify no overflow. Change-Id: I4efc24891e0b330505ddf59b7db7716f054cf9c4 Signed-off-by: Akilesh Kailash --- .../libsnapshot/snapuserd/user-space-merge/merge_worker.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs_mgr/libsnapshot/snapuserd/user-space-merge/merge_worker.cpp b/fs_mgr/libsnapshot/snapuserd/user-space-merge/merge_worker.cpp index e2c58741a..486548cad 100644 --- a/fs_mgr/libsnapshot/snapuserd/user-space-merge/merge_worker.cpp +++ b/fs_mgr/libsnapshot/snapuserd/user-space-merge/merge_worker.cpp @@ -55,7 +55,7 @@ int MergeWorker::PrepareMerge(uint64_t* source_offset, int* pending_ops, break; } - *source_offset = cow_op->new_block * BLOCK_SZ; + *source_offset = static_cast(cow_op->new_block) * BLOCK_SZ; if (!checkOrderedOp) { replace_zero_vec->push_back(cow_op); if (cow_op->type() == kCowReplaceOp) { @@ -74,7 +74,7 @@ int MergeWorker::PrepareMerge(uint64_t* source_offset, int* pending_ops, break; } - uint64_t next_offset = op->new_block * BLOCK_SZ; + uint64_t next_offset = static_cast(op->new_block) * BLOCK_SZ; if (next_offset != (*source_offset + nr_consecutive * BLOCK_SZ)) { break; }