From e127bb1fb9b1025094a0e0ce50d2e44c38c4e97f Mon Sep 17 00:00:00 2001 From: Danny Al-Gaaf Date: Thu, 18 Jun 2015 08:58:20 +0200 Subject: gf_w64.c: fix integer overflow Fix for Coverity issue (from Ceph): CID 1193087 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN) overflow_before_widen: Potentially overflowing expression 1 << g_r with type int (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type uint64_t (64 bits, unsigned). Signed-off-by: Danny Al-Gaaf --- src/gf_w64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gf_w64.c b/src/gf_w64.c index 74e5e9e..c8356b8 100644 --- a/src/gf_w64.c +++ b/src/gf_w64.c @@ -791,7 +791,7 @@ gf_w64_group_multiply(gf_t *gf, gf_val_64_t a, gf_val_64_t b) lshift = ((lshift-1) / g_r) * g_r; rshift = 64 - lshift; - mask = (1 << g_r) - 1; + mask = ((uint64_t)1 << g_r) - 1; while (lshift >= 0) { tp = gd->reduce[(top >> lshift) & mask]; top ^= (tp >> rshift); -- cgit v1.2.1