diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-06-14 14:53:54 -0700 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-06-17 12:21:28 -0700 |
commit | 4a739b13f420acf4f0af21b4cf133ac08c97ee18 (patch) | |
tree | 582a2ed304b8022bb12b1d8948c39e50e91adc50 | |
parent | 6edba9e9ad1c115a462aeab858063fe3939a40e4 (diff) | |
download | ceph-4a739b13f420acf4f0af21b4cf133ac08c97ee18.tar.gz |
rgw: escape prefix correctly when listing objects
Fixes: #5362
When listing objects prefix needs to be escaped correctly (the
same as with the marker). Otherwise listing objects with prefix
that starts with underscore doesn't work.
Backport: bobtail, cuttlefish
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
(cherry picked from commit d582ee2438a3bd307324c5f44491f26fd6a56704)
-rw-r--r-- | src/rgw/rgw_rados.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index d31e2a5a48e..7d038639a74 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -735,14 +735,18 @@ int RGWRados::list_objects(rgw_bucket& bucket, int max, string& prefix, string& } result.clear(); - rgw_obj marker_obj; + rgw_obj marker_obj, prefix_obj; marker_obj.set_ns(ns); marker_obj.set_obj(marker); string cur_marker = marker_obj.object; + prefix_obj.set_ns(ns); + prefix_obj.set_obj(prefix); + string cur_prefix = prefix_obj.object; + do { std::map<string, RGWObjEnt> ent_map; - int r = cls_bucket_list(bucket, cur_marker, prefix, max - count, ent_map, + int r = cls_bucket_list(bucket, cur_marker, cur_prefix, max - count, ent_map, &truncated, &cur_marker); if (r < 0) return r; |