From a9ec5e8ce184e19c009863db4d3519f9d8af91bd Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 8 Mar 2017 14:52:34 -0800 Subject: [PATCH] rgw: fix crash when listing objects via swift Fixes: http://tracker.ceph.com/issues/19249 Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_rest_swift.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index eb51cbe85ab3..1af9612e888e 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -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; -- 2.47.3