This is why we can't have nice things.
Signed-off-by: Jesse F. Williamson <jfw@ibm.com>
#include <include/types.h>
#include <include/ceph_fs.h>
-#include "include/buffer.h"
-
#include "common/ceph_time.h"
#include <fmt/format.h>
: false;
}
- bool parse(ceph::buffer::list& bl) { return parse(std::string_view { bl.c_str(), bl.length() }); }
-
// operate on a data file:
bool parse(const char *file_name);
JSONParser parser;
JSONDecoder(ceph::buffer::list& bl) {
- if (!parser.parse(bl))
+ if (!parser.parse(bl.c_str(), bl.length()))
throw JSONDecoder::err("failed to parse JSON input");
}
/* now parse response */
JSONParser parser;
- if (! parser.parse(token_body_bl)) {
+ if (! parser.parse(token_body_bl.c_str(), token_body_bl.length())) {
ldpp_dout(dpp, 0) << "Keystone credential parse error: malformed json" << dendl;
return make_pair(boost::none, -EINVAL);
}
ceph::bufferlist& bl)
{
JSONParser parser;
- if (! parser.parse(bl)) {
+ if (! parser.parse(bl.c_str(), bl.length())) {
ldpp_dout(dpp, 0) << "Keystone token parse error: malformed json" << dendl;
return -EINVAL;
}
}
JSONParser parser;
- if (!parser.parse(bl)) {
+ if (!parser.parse(bl.c_str(), bl.length())) {
return -EINVAL;
}
if (ret < 0) {
return ret;
}
- if (jp && !jp->parse(outdata)) {
+ if (jp && !jp->parse(outdata.c_str(), outdata.length())) {
ldpp_dout(dpp, 0) << "failed parsing response from master zonegroup" << dendl;
return -EINVAL;
}
JSONParser parser;
- if (!parser.parse(data)) {
+ if (!parser.parse(data.c_str(), data.length())) {
return -EINVAL;
}
/* check OPA response */
JSONParser parser;
- if (!parser.parse(bl)) {
+ if (!parser.parse(bl.c_str(), bl.length())) {
ldpp_dout(op, 2) << "OPA parse error: malformed json" << dendl;
return -EINVAL;
}
}
JSONParser parser;
- r = parser.parse(data);
+ r = parser.parse(data.c_str(), data.length());
if (r < 0) {
ldpp_dout(dpp, -1) << "request failed: " << cpp_strerror(-r) << dendl;
return r;
{
JSONParser parser;
- if (!parser.parse(bl)) {
+ // JSON coming in for Policies can include the NULL character, which breaks parsing:
+ if (!parser.parse(std::string_view(bl.c_str(), bl.length() - 1))) {
err_msg = "Malformed JSON";
dout(0) << "malformed json" << dendl;
return -EINVAL;
JSONParser parser;
- if (!parser.parse(data)) {
+ if (!parser.parse(data.c_str(), data.length())) {
return std::make_tuple(-EINVAL, std::move(data));
}
inline int parse_decode_json(T& t, bufferlist& bl)
{
JSONParser p;
- if (!p.parse(bl)) {
+ if (!p.parse(bl.c_str(), bl.length())) {
return -EINVAL;
}
}
JSONParser p;
- if (!p.parse(trust_policy)) {
+ if (!p.parse(trust_policy.c_str(), trust_policy.length())) {
ldpp_dout(this, 20) << "ERROR: failed to parse assume role policy doc" << dendl;
return -ERR_MALFORMED_DOC;
}
ldpp_dout(dpp, 20) << "JSON Response is: " << openidc_resp.c_str() << dendl;
JSONParser parser;
- if (parser.parse(openidc_resp)) {
+ if (parser.parse(openidc_resp.c_str(), openidc_resp.length())) {
JSONObj::data_val val;
if (parser.get_data("jwks_uri", &val)) {
cert_url = val.str.c_str();
ldpp_dout(dpp, 20) << "JSON Response is: " << cert_resp.c_str() << dendl;
JSONParser parser;
- if (parser.parse(cert_resp)) {
+ if (parser.parse(cert_resp.c_str(), cert_resp.length())) {
JSONObj::data_val val;
if (parser.get_data("keys", &val)) {
if (val.str[0] == '[') {
buffer::list bl;
bl.append(outstring);
- EXPECT_TRUE(parser.parse(bl));
+ EXPECT_TRUE(parser.parse(bl.c_str(), bl.length()));
JSONObj *pgstat_obj = parser.find_obj("pg_stats");
EXPECT_TRUE(pgstat_obj);
buffer::list bl;
bl.append(json_input);
- ASSERT_TRUE(parser.parse(bl));
+ ASSERT_TRUE(parser.parse(bl.c_str(), bl.length()));
JSONObjIter oi = parser.find_first();