Currently, if the index_doc_suffix is empty which is leaded
by the IndexDocument field is not configurated or is set to
empty string during enabling bucket website function, the
rgw will crash when accessing the static website through the
S3Website enabled RGW instance.
In actually, we have add the necessary checking in the commit
355f392ad26631f44dac250296e96f421d86fb8f, but double checking
in here is better.
Signed-off-by: Enming Zhang <enming.zhang@umcloud.com>
(cherry picked from commit
c96f415dafe176b1b8d10ff9456d13fb76c79baa)
Conflicts:
src/rgw/rgw_rest_s3.cc
- ldpp_dout
rgw_obj_key new_obj;
s->bucket_info.website_conf.get_effective_key(s->object.name, &new_obj.name, web_dir());
+ bool get_res = s->bucket_info.website_conf.get_effective_key(s->object.name, &new_obj.name, web_dir());
+ if (!get_res) {
+ s->err.message = "The IndexDocument Suffix is not configurated or not well formed!";
+ ldout(s->cct, 5) << s->err.message << dendl;
+ return -EINVAL;
+ }
+
ldout(s->cct, 10) << "retarget get_effective_key " << s->object << " -> "
<< new_obj << dendl;
return true;
}
-void RGWBucketWebsiteConf::get_effective_key(const string& key, string *effective_key, bool is_file) const
+bool RGWBucketWebsiteConf::get_effective_key(const string& key, string *effective_key, bool is_file) const
{
+ if (index_doc_suffix.empty()) {
+ return false;
+ }
if (key.empty()) {
*effective_key = index_doc_suffix;
} else {
*effective_key = key;
}
+
+ return true;
}
const int http_error_code,
RGWBWRoutingRule *redirect);
- void get_effective_key(const std::string& key,
+ bool get_effective_key(const std::string& key,
std::string *effective_key, bool is_file) const;
const std::string& get_index_doc() const {