From: Radoslaw Zarzynski Date: Fri, 21 Aug 2015 19:14:31 +0000 (+0200) Subject: rgw: fix dangerous removal from STL map in filter_out_temp_url(). X-Git-Tag: v9.1.0~300^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F5639%2Fhead;p=ceph.git rgw: fix dangerous removal from STL map in filter_out_temp_url(). Fixes: #12750 Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index c3827714d0f..d5e16793512 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -2181,17 +2181,17 @@ void RGWPutMetadataAccount::filter_out_temp_url(map& add_att map& temp_url_keys) { map::iterator iter; - for (iter = add_attrs.begin(); iter != add_attrs.end(); ++iter) { - const string name = iter->first; - if (name.compare(RGW_ATTR_TEMPURL_KEY1) == 0) { - temp_url_keys[0] = iter->second.c_str(); - add_attrs.erase(name); - } - if (name.compare(RGW_ATTR_TEMPURL_KEY2) == 0) { - temp_url_keys[1] = iter->second.c_str(); - add_attrs.erase(name); - } + iter = add_attrs.find(RGW_ATTR_TEMPURL_KEY1); + if (iter != add_attrs.end()) { + temp_url_keys[0] = iter->second.c_str(); + add_attrs.erase(iter); + } + + iter = add_attrs.find(RGW_ATTR_TEMPURL_KEY2); + if (iter != add_attrs.end()) { + temp_url_keys[1] = iter->second.c_str(); + add_attrs.erase(iter); } set::const_iterator riter;