return ret;
}
-void rgw_add_to_iam_environment(rgw::IAM::Environment& e, const std::string& key, const std::string& val){
- e[key] = val;
-}
-
-
-void rgw_add_to_iam_environment(rgw::IAM::Environment& e, const char* key, const char* val){
- if (key != nullptr && val != nullptr)
- e[key] = val;
+void rgw_add_to_iam_environment(rgw::IAM::Environment& e, std::string_view key, std::string_view val){
+ // This variant just adds non empty key pairs to IAM env., values can be empty
+ // in certain cases like tagging
+ if (!key.empty())
+ e.emplace(key,val);
}
static int rgw_iam_add_tags_from_bl(struct req_state* s, bufferlist& bl){
}
}
-
rgw::IAM::Environment rgw_build_iam_environment(RGWRados* store,
struct req_state* s)
{
if (s->iam_policy) {
rgw_add_grant_to_iam_environment(s->env, s);
- if (!s->canned_acl.empty()){
- rgw_add_to_iam_environment(s->env, "s3:x-amz-acl", s->canned_acl);
- }
+ rgw_add_to_iam_environment(s->env, "s3:x-amz-acl", s->canned_acl);
if (obj_tags != nullptr && obj_tags->count() > 0){
auto tags = obj_tags->get_tags();
{
bool perm;
- if (!s->canned_acl.empty()){
- rgw_add_to_iam_environment(s->env, "s3:x-amz-acl", s->canned_acl);
- }
+ rgw_add_to_iam_environment(s->env, "s3:x-amz-acl", s->canned_acl);
rgw_add_grant_to_iam_environment(s->env, s);
if (!s->object.empty()) {