]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: add try-catch block when decoding ObjectState
authorMatan Breizman <mbreizma@redhat.com>
Wed, 3 Aug 2022 07:11:54 +0000 (07:11 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Thu, 18 Aug 2022 10:59:26 +0000 (10:59 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/osd/pg_backend.cc

index a9871edf521b032cf3fcff0b0101c8ad4d71ed02..77dcc580191987c10cdec398b0f0286294387b33 100644 (file)
@@ -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",