From: Danny Al-Gaaf Date: Wed, 17 Jun 2015 17:53:42 +0000 (+0200) Subject: osdc/Journaler.cc: fix integer overflow X-Git-Tag: v9.1.0~446^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=56a30cfd9afca2d94f5441a349de72641e1558f1;p=ceph.git osdc/Journaler.cc: fix integer overflow Fix for: CID 1297861 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN) overflow_before_widen: Potentially overflowing expression this->layout.fl_stripe_count.operator __u32() * this->layout.fl_object_size.operator __u32() with type unsigned int (32 bits, unsigned) 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 --- diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index 3daea9400a5..2229a9e08da 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -55,7 +55,7 @@ void Journaler::create(ceph_file_layout *l, stream_format_t const sf) prezeroing_pos = prezero_pos = write_pos = flush_pos = safe_pos = read_pos = requested_pos = received_pos = - expire_pos = trimming_pos = trimmed_pos = layout.fl_stripe_count * layout.fl_object_size; + expire_pos = trimming_pos = trimmed_pos = (uint64_t)layout.fl_stripe_count * layout.fl_object_size; ldout(cct, 1) << "created blank journal at inode 0x" << std::hex << ino << std::dec << ", format=" << stream_format << dendl;