os/kstore: fix u64 decode checks

Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
Sage Weil 2016-01-18 09:55:17 -05:00
parent f8ea3eb6c0
commit 328610631d

View File

@ -302,19 +302,13 @@ static int get_key_object(const string& key, ghobject_t *oid)
const char *p = key.c_str();
p = _key_decode_shard(p, &oid->shard_id);
if (!*p)
return -2;
uint64_t pool;
p = _key_decode_u64(p, &pool);
if (!*p)
return -3;
oid->hobj.pool = pool - 0x8000000000000000ull;
unsigned hash;
p = _key_decode_u32(p, &hash);
if (!*p)
return -4;
oid->hobj.set_bitwise_key_u32(hash);
if (*p != '.')
return -5;
@ -351,8 +345,6 @@ static int get_key_object(const string& key, ghobject_t *oid)
}
p = _key_decode_u64(p, &oid->hobj.snap.val);
if (!*p)
return -11;
p = _key_decode_u64(p, &oid->generation);
if (*p) {
// if we get something other than a null terminator here,