From c2cf8eb79ec2f38ec1906da39e89bea94d0e0e2b Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Tue, 25 Sep 2012 10:42:38 -0700 Subject: [PATCH] librbd: assert overflow will not happen 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 --- src/librbd/internal.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 9d4a6fe15cd11..a9f09fcc69438 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -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; } -- 2.39.5