]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgwlc: fix error return from backward-compat decode
authorMatt Benjamin <mbenjamin@redhat.com>
Wed, 22 Jul 2020 17:58:00 +0000 (13:58 -0400)
committerNathan Cutler <ncutler@suse.com>
Sun, 9 Aug 2020 20:49:15 +0000 (22:49 +0200)
Exception handling in backward-compat case returned EIO even when
the actual backward-compat decode succeeded.

Fixes: https://tracker.ceph.com/issues/46677
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit fa3036168b67a191d7ac37d0d34409f5b3d87b5d)

src/cls/rgw/cls_rgw.cc

index bd08ed0c72d8cb58c16c67c82e4daff639435592..ae3381d503300a249171bdb75f2a896a09d24827 100644 (file)
@@ -3771,13 +3771,14 @@ static int rgw_cls_lc_list_entries(cls_method_context_t hctx, bufferlist *in,
       /* try backward compat */
       pair<string, int> oe;
       try {
+       iter = it->second.begin();
        decode(oe, iter);
        entry = {oe.first, 0 /* start */, uint32_t(oe.second)};
       } catch(buffer::error& err) {
        CLS_LOG(
          1, "ERROR: rgw_cls_lc_list_entries(): failed to decode entry\n");
+       return -EIO;
       }
-      return -EIO;
     }
    op_ret.entries.push_back(entry);
   }