From: Pauli Date: Thu, 31 Mar 2022 22:33:17 +0000 (+1100) Subject: Fix Coverity 1498612 & 1503221: integer overflow X-Git-Tag: openssl-3.2.0-alpha1~2796 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=766a7d4676f08f815dd5070409e94954f4b64c6c;p=thirdparty%2Fopenssl.git Fix Coverity 1498612 & 1503221: integer overflow Both are the same issue and both as false positives. Annotate the line so that this is ignored. Reviewed-by: Tomas Mraz Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/18012) --- diff --git a/crypto/ec/curve448/curve448.c b/crypto/ec/curve448/curve448.c index 4db72cd28d9..2fbeb45612b 100644 --- a/crypto/ec/curve448/curve448.c +++ b/crypto/ec/curve448/curve448.c @@ -586,9 +586,15 @@ static int recode_wnaf(struct smvt_control *control, int32_t delta = odd & mask; assert(position >= 0); - assert(pos < 32); /* can't fail since current & 0xFFFF != 0 */ if (odd & (1 << (table_bits + 1))) delta -= (1 << (table_bits + 1)); + /* + * Coverity gets confused by the value of pos, thinking it might be + * 32. This would require current & 0xFFFF to be zero which isn't + * possible. Suppress this false positive, since adding a check + * isn't desirable. + */ + /* coverity[overflow_before_widen] */ current -= delta * (1 << pos); control[position].power = pos + 16 * (w - 1); control[position].addend = delta;