]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fail when get/set-bucket-versioning attempted on a non-existent bucket 36188/head
authorMatt Benjamin <mbenjamin@redhat.com>
Mon, 24 Feb 2020 22:56:49 +0000 (17:56 -0500)
committerNathan Cutler <ncutler@suse.com>
Sat, 18 Jul 2020 20:26:03 +0000 (22:26 +0200)
These should not succeed, but fail w/HTTP 404 and NoSuchBucket as
the API error.

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

src/rgw/rgw_op.cc
src/rgw/rgw_rest_s3.cc

index a0c0e81801e5176dd0d2faa4ad2d6f2fafd06ba9..6ab721e070bedf1f917f952fe5dfd350f4f25764 100644 (file)
@@ -2453,6 +2453,11 @@ void RGWGetBucketVersioning::pre_exec()
 
 void RGWGetBucketVersioning::execute()
 {
+  if (! s->bucket_exists) {
+    op_ret = -ERR_NO_SUCH_BUCKET;
+    return;
+  }
+
   versioned = s->bucket_info.versioned();
   versioning_enabled = s->bucket_info.versioning_enabled();
   mfa_enabled = s->bucket_info.mfa_enabled();
@@ -2474,6 +2479,11 @@ void RGWSetBucketVersioning::execute()
   if (op_ret < 0)
     return;
 
+  if (! s->bucket_exists) {
+    op_ret = -ERR_NO_SUCH_BUCKET;
+    return;
+  }
+
   if (s->bucket_info.obj_lock_enabled() && versioning_status != VersioningEnabled) {
     op_ret = -ERR_INVALID_BUCKET_STATE;
     return;
index 34012e99152f8ec8796439e66b3030d685498f3f..79e554fa28571dda2997ee32499c9b0c2e5a1d35 100644 (file)
@@ -1183,6 +1183,8 @@ void RGWGetBucketLocation_ObjStore_S3::send_response()
 
 void RGWGetBucketVersioning_ObjStore_S3::send_response()
 {
+  if (op_ret)
+    set_req_state_err(s, op_ret);
   dump_errno(s);
   end_header(s, this, "application/xml");
   dump_start(s);