Moving the attrs into s->bucket_attrs before setting them results in
setting empty attrs into the bucket. This means that reading them back
later gets empty attrs, which can cause a segfault.
Signed-off-by: Daniel Gryniewicz <dang@redhat.com>
(cherry picked from commit
4d38154f5779b01ed93430ef7405417820214796)
Conflicts:
src/rgw/rgw_op.cc
rgw::sal::RGWAttrs a(attrs);
op_ret = s->object->set_obj_attrs(this, s->obj_ctx, &a, nullptr, y);
} else {
- for (auto& iter : attrs) {
- s->bucket_attrs[iter.first] = std::move(iter.second);
- }
op_ret = store->ctl()->bucket->set_bucket_instance_attrs(
s->bucket->get_info(), attrs, &s->bucket->get_info().objv_tracker,
s->yield, this);