From 06fe98c1a729de62767273923bb56f934abd30e1 Mon Sep 17 00:00:00 2001 From: Patrick LeBlanc Date: Mon, 8 Apr 2019 13:52:21 -0500 Subject: [PATCH] Fixed a boundary condition in metadatafile. --- src/MetadataFile.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/MetadataFile.cpp b/src/MetadataFile.cpp index a9ba6b4ab..cc44ed3d5 100755 --- a/src/MetadataFile.cpp +++ b/src/MetadataFile.cpp @@ -221,11 +221,18 @@ vector MetadataFile::metadataRead(off_t offset, size_t length) c vector ret; size_t foundLen = 0; + if (mObjects.size() == 0) + return ret; + + uint64_t lastOffset = mObjects.rbegin()->offset; auto i = mObjects.begin(); // find the first object in range + // Note, the last object in mObjects may not be full, compare the last one against its maximum + // size rather than its current size. while (i != mObjects.end()) { - if ((uint64_t) offset <= (i->offset + i->length - 1)) + if ((uint64_t) offset <= (i->offset + i->length - 1) || + (i->offset == lastOffset && ((uint64_t) offset <= i->offset + mpConfig->mObjectSize - 1))) break; ++i; }