]> 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 33521/head
authorMatt Benjamin <mbenjamin@redhat.com>
Mon, 24 Feb 2020 22:56:49 +0000 (17:56 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Mon, 24 Feb 2020 22:56:49 +0000 (17:56 -0500)
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>
src/rgw/rgw_op.cc
src/rgw/rgw_rest_s3.cc

index cb8e8a90d5333e71f6c476ebeb2085d04164f34d..94828defb1573382ca5a5e2e5c45f70c8968b915 100644 (file)
@@ -2651,6 +2651,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();
@@ -2672,6 +2677,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 532d738b580755e2cb72c079e7241abe5eca2e68..831f812a46d8edeb393a8f6715a31cc3d8f251e9 100644 (file)
@@ -1824,6 +1824,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);