[PATCH 05/11] xfsprogs: xfs_mdrestore: check bad read count in perform_restore
Eric Sandeen
sandeen at sandeen.net
Wed Dec 2 22:54:19 CST 2015
On 12/2/15 5:19 AM, Vivek Trivedi wrote:
> fix error reported by coverity - Integer overflowed argument
>
> also, add print incase of invalid read count to get more debug
> information.
>
> Signed-off-by: Vivek Trivedi <t.vivek at samsung.com>
> ---
> mdrestore/xfs_mdrestore.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c
> index 5764616..a87a091 100644
> --- a/mdrestore/xfs_mdrestore.c
> +++ b/mdrestore/xfs_mdrestore.c
> @@ -93,6 +93,10 @@ perform_restore(
> block_index = (__be64 *)((char *)metablock + sizeof(xfs_metablock_t));
> block_buffer = (char *)metablock + block_size;
>
> + if (block_size < sizeof(tmb))
> + fatal("bad read count, block_size: %d, tmb size %d\n",
> + block_size, sizeof(tmb));
> +
block_size is block_size = 1 << tmb.mb_blocklog; where mb_blocklog is
always metablock->mb_blocklog = BBSHIFT;, so block_size is always 512.
On the other hand, sizeof(tmb) is simply 8.
There seems to be no possible path for this to be a problem, so it hardly
seems worth the printf.
Would an ASSERT(block_size >= sizeof(tmb)) make coverity happy?
-Eric
> if (fread(block_index, block_size - sizeof(tmb), 1, src_f) != 1)
> fatal("error reading from file: %s\n", strerror(errno));
>
>
More information about the xfs
mailing list