Message ID | 1466701630-6380-1-git-send-email-billodo@redhat.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On 6/23/16 12:07 PM, Bill O'Donnell wrote: > Coverity complains that when multiplying two 32 bit values that > eventually will be stored in a 64 bit value that it's possible > the math could overflow unless one of the values being multiplied > is type cast to the proper size. > > Signed-off-by: Bill O'Donnell <billodo@redhat.com> Makes sense. Given that this is repair, and either value could be larger than expected, we need the skip value to be accurate. Reviewed-by: Eric Sandeen <sandeen@redhat.com> > --- > repair/sb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/repair/sb.c b/repair/sb.c > index 3965953..8d4843c 100644 > --- a/repair/sb.c > +++ b/repair/sb.c > @@ -230,7 +230,7 @@ find_secondary_sb(xfs_sb_t *rsb) > do_warn(_("\nattempting to find secondary superblock...\n")); > > if (verify_sb_blocksize(rsb) == 0) { > - skip = rsb->sb_agblocks * rsb->sb_blocksize; > + skip = (__uint64_t)rsb->sb_agblocks * rsb->sb_blocksize; > if (skip >= XFS_AG_MIN_BYTES && skip <= XFS_AG_MAX_BYTES) > retval = __find_secondary_sb(rsb, skip, skip); > } >
diff --git a/repair/sb.c b/repair/sb.c index 3965953..8d4843c 100644 --- a/repair/sb.c +++ b/repair/sb.c @@ -230,7 +230,7 @@ find_secondary_sb(xfs_sb_t *rsb) do_warn(_("\nattempting to find secondary superblock...\n")); if (verify_sb_blocksize(rsb) == 0) { - skip = rsb->sb_agblocks * rsb->sb_blocksize; + skip = (__uint64_t)rsb->sb_agblocks * rsb->sb_blocksize; if (skip >= XFS_AG_MIN_BYTES && skip <= XFS_AG_MAX_BYTES) retval = __find_secondary_sb(rsb, skip, skip); }
Coverity complains that when multiplying two 32 bit values that eventually will be stored in a 64 bit value that it's possible the math could overflow unless one of the values being multiplied is type cast to the proper size. Signed-off-by: Bill O'Donnell <billodo@redhat.com> --- repair/sb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)