]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix crash when listing objects via swift 11485/head
authorYehuda Sadeh <yehuda@redhat.com>
Wed, 8 Mar 2017 22:52:34 +0000 (14:52 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Thu, 9 Mar 2017 17:18:56 +0000 (09:18 -0800)
Fixes: http://tracker.ceph.com/issues/19249
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_rest_swift.cc

index eb51cbe85ab35d17352ff31523afdba42ea9104b..1af9612e888ea9c8ba28bfab53c704f7015317df 100644 (file)
@@ -283,15 +283,18 @@ void RGWListBucket_ObjStore_SWIFT::send_response()
   while (iter != objs.end() || pref_iter != common_prefixes.end()) {
     bool do_pref = false;
     bool do_objs = false;
-    rgw_obj_key key(iter->key);
+    rgw_obj_key key;
+    if (iter != objs.end()) {
+      key = iter->key;
+    }
     if (pref_iter == common_prefixes.end())
       do_objs = true;
     else if (iter == objs.end())
       do_pref = true;
-    else if (key.name.compare(pref_iter->first) == 0) {
+    else if (!key.empty() && key.name.compare(pref_iter->first) == 0) {
       do_objs = true;
       ++pref_iter;
-    } else if (key.name.compare(pref_iter->first) <= 0)
+    } else if (!key.empty() && key.name.compare(pref_iter->first) <= 0)
       do_objs = true;
     else
       do_pref = true;