]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix dangerous removal from STL map in filter_out_temp_url(). 5639/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Fri, 21 Aug 2015 19:14:31 +0000 (21:14 +0200)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Fri, 21 Aug 2015 20:29:47 +0000 (22:29 +0200)
Fixes: #12750
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_op.cc

index c3827714d0f1e9e8f10722774b53de420a54f7a2..d5e167935121d9141aabcb33a363f6bf39b66ecc 100644 (file)
@@ -2181,17 +2181,17 @@ void RGWPutMetadataAccount::filter_out_temp_url(map<string, bufferlist>& add_att
                                                 map<int, string>& temp_url_keys)
 {
   map<string, bufferlist>::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<string>::const_iterator riter;