]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: assert overflow will not happen
authorJosh Durgin <josh.durgin@inktank.com>
Tue, 25 Sep 2012 17:42:38 +0000 (10:42 -0700)
committerJosh Durgin <josh.durgin@inktank.com>
Tue, 25 Sep 2012 17:42:38 +0000 (10:42 -0700)
CID 716937: Overflowed return value (INTEGER_OVERFLOW)
At (3): Overflowed or truncated value (or a value computed from an
overflowed or truncated value) "offset" used as return value.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
src/librbd/internal.cc

index 9d4a6fe15cd11199164c2ef93a8032bbe1b73c3c..a9f09fcc694383a62024df548b26ec3c10a4108c 100644 (file)
@@ -140,7 +140,9 @@ namespace librbd {
     iss.ignore(object_prefix.length() + 1);
     uint64_t num, offset;
     iss >> std::hex >> num;
-    offset = num * (1ULL << order);
+    uint64_t block_size = 1ULL << order;
+    assert(num > (ULLONG_MAX / block_size));
+    offset = num * block_size;
     return offset;
   }