From: Matan Breizman Date: Wed, 3 Aug 2022 07:11:54 +0000 (+0000) Subject: crimson/osd: add try-catch block when decoding ObjectState X-Git-Tag: v18.0.0~197^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=13225cdeee8d2810be5de6d7eed803b92c83c493;p=ceph.git crimson/osd: add try-catch block when decoding ObjectState Signed-off-by: Matan Breizman --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index a9871edf521b..77dcc5801919 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -83,9 +83,14 @@ PGBackend::load_metadata(const hobject_t& oid) loaded_object_md_t::ref ret(new loaded_object_md_t()); if (auto oiiter = attrs.find(OI_ATTR); oiiter != attrs.end()) { bufferlist bl = std::move(oiiter->second); - ret->os = ObjectState( - object_info_t(bl, oid), - true); + try { + ret->os = ObjectState( + object_info_t(bl, oid), + true); + } catch (const buffer::error&) { + logger().warn("unable to decode ObjectState"); + throw crimson::osd::invalid_argument(); + } } else { logger().error( "load_metadata: object {} present but missing object info",