xfs
[Top] [All Lists]

Re: [PATCH 03/11] xfsprogs: mkfs: fix unintentional integer overflow

To: Vivek Trivedi <t.vivek@xxxxxxxxxxx>
Subject: Re: [PATCH 03/11] xfsprogs: mkfs: fix unintentional integer overflow
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Thu, 3 Dec 2015 16:54:11 +1100
Cc: xfs@xxxxxxxxxxx, a.sahrawat@xxxxxxxxxxx, pankaj.m@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1449055167-19936-4-git-send-email-t.vivek@xxxxxxxxxxx>
References: <1449055167-19936-1-git-send-email-t.vivek@xxxxxxxxxxx> <1449055167-19936-4-git-send-email-t.vivek@xxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Wed, Dec 02, 2015 at 04:49:19PM +0530, Vivek Trivedi wrote:
> Fix unintentional integer overflow  in mkfs.
> Reported by coverity.
> 
> Signed-off-by: Vivek Trivedi <t.vivek@xxxxxxxxxxx>
> ---
>  mkfs/xfs_mkfs.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> index 7cba41a..e540c48 100644
> --- a/mkfs/xfs_mkfs.c
> +++ b/mkfs/xfs_mkfs.c
> @@ -2033,7 +2033,7 @@ _("warning: sparse inodes not supported without CRC 
> support, disabled.\n"));
>               /* check that rswidth is a multiple of fs blocksize */
>               if (!norsflag && rswidth && !(BBTOB(rswidth) % blocksize)) {
>                       rswidth = DTOBT(rswidth);
> -                     rtextbytes = rswidth << blocklog;
> +                     rtextbytes = (__uint64_t)rswidth << blocklog;
>                       if (XFS_MIN_RTEXTSIZE <= rtextbytes &&
>                           (rtextbytes <= XFS_MAX_RTEXTSIZE)) {
>                               rtextblocks = rswidth;

I dislike unexplained casts in code like this. Nobody knows exactly
why it is there. A better fix is to change the definition of
rswidth to a 64 bit type so casts are not ever necessary...

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>