From: Radoslaw Zarzynski Date: Thu, 4 Feb 2021 17:35:24 +0000 (+0000) Subject: librados: NObjectIteratorImpl takes care about NUL in obj name. X-Git-Tag: v16.2.0~116^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7001ac54e7e5e4a00f64557d7dcee1d4182a0797;p=ceph.git librados: NObjectIteratorImpl takes care about NUL in obj name. Signed-off-by: Radoslaw Zarzynski (cherry picked from commit 22bb1498c93b1e1419920fe928e91885504f1f16) --- diff --git a/src/librados/librados_cxx.cc b/src/librados/librados_cxx.cc index 78bf0b562e3..ad712506b66 100644 --- a/src/librados/librados_cxx.cc +++ b/src/librados/librados_cxx.cc @@ -850,22 +850,24 @@ void librados::NObjectIteratorImpl::set_filter(const bufferlist &bl) void librados::NObjectIteratorImpl::get_next() { const char *entry, *key, *nspace; + size_t entry_size, key_size, nspace_size; if (ctx->nlc->at_end()) return; - int ret = rados_nobjects_list_next(ctx.get(), &entry, &key, &nspace); + int ret = rados_nobjects_list_next2(ctx.get(), &entry, &key, &nspace, + &entry_size, &key_size, &nspace_size); if (ret == -ENOENT) { return; } else if (ret) { throw std::system_error(-ret, std::system_category(), - "rados_nobjects_list_next"); + "rados_nobjects_list_next2"); } if (cur_obj.impl == NULL) cur_obj.impl = new ListObjectImpl(); - cur_obj.impl->nspace = nspace; - cur_obj.impl->oid = entry; - cur_obj.impl->locator = key ? key : string(); + cur_obj.impl->nspace = string{nspace, nspace_size}; + cur_obj.impl->oid = string{entry, entry_size}; + cur_obj.impl->locator = key ? string(key, key_size) : string(); } uint32_t librados::NObjectIteratorImpl::get_pg_hash_position() const