From 42fad4b76def50a0984bf3de06f78ed434d56954 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 2 Jun 2016 17:36:21 -0700 Subject: [PATCH] hobject: compensate for non-canonical hobject_t::get_max() encodings This closes a loop-hole that could allow a non-canonical in memory hobject_t::get_max() object which would return true for is_max(), but false for *this == hobject_t::get_max(). Fixes: http://tracker.ceph.com/issues/16113 Signed-off-by: Samuel Just --- src/common/hobject.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/common/hobject.cc b/src/common/hobject.cc index 51403d7c1a37e..8c3f9a2692da7 100644 --- a/src/common/hobject.cc +++ b/src/common/hobject.cc @@ -142,6 +142,12 @@ void hobject_t::decode(bufferlist::iterator& bl) pool = INT64_MIN; assert(is_min()); } + + // for compatibility with some earlier verisons which might encoded + // a non-canonical max object + if (max) { + *this = hobject_t::get_max(); + } } DECODE_FINISH(bl); build_hash_cache(); -- 2.39.5