From e1132a9c2ff5a039fcdd33694fe42bd245d2fca8 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 19 Jul 2023 23:03:54 -0700 Subject: [PATCH] snapuserd: Fix ubsan when reading a single aligned sector. When a read request is for a single sector, and the sector is block-aligned, it falls into the ReadAlignedSector path, which assumes block-sized reads. Fix this by clamping the expected size. Bug: 291862304 Test: manual test of ReadWorker::ReadAlignedSector full OTA Change-Id: I00e460c333e8a9a4dc2433443e3633f3d794da1d --- fs_mgr/libsnapshot/snapuserd/user-space-merge/read_worker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs_mgr/libsnapshot/snapuserd/user-space-merge/read_worker.cpp b/fs_mgr/libsnapshot/snapuserd/user-space-merge/read_worker.cpp index 7268fca1e..7d2e3a613 100644 --- a/fs_mgr/libsnapshot/snapuserd/user-space-merge/read_worker.cpp +++ b/fs_mgr/libsnapshot/snapuserd/user-space-merge/read_worker.cpp @@ -305,7 +305,7 @@ bool ReadWorker::ReadAlignedSector(sector_t sector, size_t sz) { return false; } - ret = BLOCK_SZ; + ret = std::min(BLOCK_SZ, read_size); } read_size -= ret;