src_bucket_name = src_parent->bucket_name();
// need s->src_bucket_name?
- src_object->set_name(src_parent->format_child_name(src_name, false));
- // need s->src_object?
-
dest_bucket_name = dst_parent->bucket_name();
// need s->bucket.name?
dest_obj_name = dst_parent->format_child_name(dst_name, false);
/* we don't have (any) headers, so just create canned ACLs */
int ret = s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
dest_policy = s3policy;
+ /* src_object required before RGWCopyObj::verify_permissions() */
+ rgw_obj_key k = rgw_obj_key(src_name);
+ src_object = rgwlib.get_store()->get_object(k);
+ s->object = src_object->clone(); // needed to avoid trap at rgw_op.cc:5150
return ret;
}
if (init_common() < 0)
return;
+ if (! s->object->get_bucket()) {
+ s->bucket = src_object->get_bucket()->clone();
+ s->object->set_bucket(s->bucket.get());
+ }
+
// make reservation for notification if needed
rgw::notify::reservation_t res(store, s, s->object.get());
const auto event_type = rgw::notify::ObjectCreatedCopy;