]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
include/fs_types: fix unsigned integer overflow 12440/head
authorrunsisi <runsisi@zte.com.cn>
Mon, 12 Dec 2016 02:40:24 +0000 (10:40 +0800)
committerrunsisi <runsisi@zte.com.cn>
Mon, 12 Dec 2016 05:53:30 +0000 (13:53 +0800)
stats image has (stripe_count * object_size) > UINT32_MAX results following exception:
  ...
  5: (()+0xc3391) [0x7f720e638391]
  6: (librbd::Image::stat(rbd_image_info_t&, unsigned long)+0x46) [0x7f720e5d1fd6]
  7: (rbd::action::info::execute(boost::program_options::variables_map const&)+0x194) [0x7f7218266744]
  8: (rbd::Shell::execute(std::vector<char const*, std::allocator<char const*> > const&)+0x87d) [0x7f721823c1bd]
  9: (main()+0x72) [0x7f721820b4c2]
  ...
  Floating point exception (core dumped)

Signed-off-by: runsisi <runsisi@zte.com.cn>
src/include/fs_types.h

index 3a76cc2e6970d285e2a2985ccfefc702b7d650ef..eee6d58a9a7325617eb5a63319a457ca430ee72f 100644 (file)
@@ -102,7 +102,7 @@ struct file_layout_t {
   }
 
   uint64_t get_period() const {
-    return stripe_count * object_size;
+    return static_cast<uint64_t>(stripe_count) * object_size;
   }
 
   void from_legacy(const ceph_file_layout& fl);