Stat block count incorrect for the boundary case
Rungta, Vandana
vrungta at amazon.com
Thu Apr 19 16:10:57 UTC 2018
In source3/lib/system.c, function init_stat_ex_from_stat line 367:
dst->st_ex_blocks = src->st_size / dst->st_ex_blksize + 1;
The blocks computed will be one too many if st_size is an exact multiple of st_ex_blksize.
Suggested fix:
dst->st_ex_blocks = (src->st_size + dst->st_ex_blksize – 1 ) / dst->st_ex_blksize ;
This problem is replicated in a couple of other places that initialize the stat_ex structure.
vfs_fruit.c : fruit_fstat line 4794, fruit_lstat line 4646, fruit_stat line 46112
vfs_streams_xattr.c: streams_xattr_fstat line 281, streams_xattr_stat line335, streams_xattr_lstat line 387
Thanks,
Vandana Rungta
More information about the samba-technical
mailing list