[PATCH 1/5] erofs-utils: fix delta[1] out-of-bound of compact indexes
Gao Xiang
hsiangkao at linux.alibaba.com
Sun Mar 5 06:58:08 AEDT 2023
delta[1] should not exceed (1 << lclusterbits) - 1, usually 4095
blocks, which means a single compressed extent which isn't less
than 16MiB could trigger this issue (it very rare happens).
Fixes: 76b822726ff8 ("erofs-utils: introduce compacted compression indexes")
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
lib/compress.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/compress.c b/lib/compress.c
index 65c6f90..f38c795 100644
--- a/lib/compress.c
+++ b/lib/compress.c
@@ -627,7 +627,8 @@ static void *write_compacted_indexes(u8 *out,
blkaddr += cblks;
*dummy_head = false;
} else if (i + 1 == vcnt) {
- offset = cv[i].u.delta[1];
+ offset = min_t(u16, cv[i].u.delta[1],
+ (1 << logical_clusterbits) - 1);
} else {
offset = cv[i].u.delta[0];
}
--
2.24.4
More information about the Linux-erofs
mailing list