#define SWIFT_GROUP_ALL_USERS ".r:*"
-static int parse_list(const std::string& uid_list,
+static int parse_list(const char* uid_list,
std::vector<std::string>& uids) /* out */
{
- char *s = strdup(uid_list.c_str());
+ char *s = strdup(uid_list);
if (!s) {
return -ENOMEM;
}
int RGWAccessControlPolicy_SWIFT::create(RGWRados* const store,
const rgw_user& id,
const std::string& name,
- const std::string& read_list,
- const std::string& write_list,
+ const char* read_list,
+ const char* write_list,
uint32_t& rw_mask)
{
acl.create_default(id, name);
owner.set_name(name);
rw_mask = 0;
- if (read_list.size()) {
+ if (read_list) {
std::vector<std::string> uids;
int r = parse_list(read_list, uids);
if (r < 0) {
}
rw_mask |= SWIFT_PERM_READ;
}
- if (write_list.size()) {
+ if (write_list) {
std::vector<std::string> uids;
int r = parse_list(write_list, uids);
if (r < 0) {
int create(RGWRados *store,
const rgw_user& id,
const std::string& name,
- const std::string& read_list,
- const std::string& write_list,
+ const char* read_list,
+ const char* write_list,
uint32_t& rw_mask);
void filter_merge(uint32_t mask, RGWAccessControlPolicy_SWIFT *policy);
void to_str(std::string& read, std::string& write);
RGWCORSConfiguration * const cors_config,
bool * const has_cors)
{
- string read_list, write_list;
-
- const char * const read_attr = s->info.env->get("HTTP_X_CONTAINER_READ");
- if (read_attr) {
- read_list = read_attr;
- }
- const char * const write_attr = s->info.env->get("HTTP_X_CONTAINER_WRITE");
- if (write_attr) {
- write_list = write_attr;
- }
+ const char * const read_list = s->info.env->get("HTTP_X_CONTAINER_READ");
+ const char * const write_list = s->info.env->get("HTTP_X_CONTAINER_WRITE");
*has_policy = false;
- if (read_attr || write_attr) {
+ if (read_list || write_list) {
RGWAccessControlPolicy_SWIFT swift_policy(s->cct);
const auto r = swift_policy.create(store,
s->user->user_id,