DF-0888 / build.log
BUILD_EXIT=0 -rwxr-xr-x 1 maxx maxx 9152 Jul 5 18:57 harness -rwxr-xr-x 1 maxx maxx 8472 Jul 5 18:57 trigger === harness run === == DF-0888 deterministic arithmetic harness == block_size = 4096 bytes NINDR(fs) = 1024 (max indirect-block pointers per block) triple-indirect capacity (NINDR^3 blocks) = 1073741824 triple-indirect max file bytes = 4402345721856 (~4.0 TiB) on-disk i_size = 6597069766656 (~6.0 TiB) ftruncate length= 5497558138880 (~5.0 TiB) ext2_ind_truncate arithmetic (lines 310-313): lastblock = 1342177279 lastiblock[SINGLE] = 1342177267 lastiblock[DOUBLE] = 1342176243 lastiblock[TRIPLE] = 1341127667 NINDR^3 (max TRIPLE indices) = 1073741824 lastiblock[TRIPLE] > NINDR^3 ? YES -> OOB lastiblock[TRIPLE] >= 0 -> stays huge positive (NOT normalized to -1) Assuming i_block[14] (i_ib[TRIPLE]) is non-zero -> ext2_indirtrunc(level=TRIPLE) ext2_indirtrunc(level=TRIPLE, lastbn=lastiblock[TRIPLE]): factor (NINDR^2) = 1048576 last = lastbn / factor = 1278 NINDR(fs) = 1024 NINDR(fs)-1 (max valid index) = 1023 last > NINDR-1 ? = YES -> OOB index bzero start: &bap[1279] (bap has 1024 entries, valid idx 0..1023) start OOB ? = YES bzero len = (NINDR-(last+1))*4 = 18446744073709550596 bytes (size_t) len underflow ? = YES -> ~2^64 byte bzero (heap OOB write) bp->b_data buffer size = 4096 bytes (fs->e2fs_bsize) == RESULT: BUG CONFIRMED -- OOB heap bzero in ext2_indirtrunc == HARNESS_EXIT=2