[crashpad] improve error message for invalid config schema
TESTED=`fx run-test crashpad_analyzer_tests --test=config_unittest`
Change-Id: I6b5990a8c787088673483e897379cde91d035491
diff --git a/bin/crashpad/config.cc b/bin/crashpad/config.cc
index 6f3546e..6939a9e 100644
--- a/bin/crashpad/config.cc
+++ b/bin/crashpad/config.cc
@@ -36,12 +36,17 @@
const char kLocalCrashpadDatabasePathKey[] = "local_crashpad_database_path";
const char kEnableUploadToCrashServerKey[] = "enable_upload_to_crash_server";
-bool CheckSchema(rapidjson::Document& doc) {
+bool CheckAgainstSchema(rapidjson::Document& doc) {
+ // Check that the schema is actually valid.
rapidjson::Document sd;
- if (sd.Parse(kSchema).HasParseError()) {
- FX_LOGS(ERROR) << "invalid JSON schema for config";
+ rapidjson::ParseResult ok = sd.Parse(kSchema);
+ if (!ok) {
+ FX_LOGS(ERROR) << "invalid JSON schema for config at offset " << ok.Offset()
+ << " " << rapidjson::GetParseError_En(ok.Code());
return false;
}
+
+ // Check the document against the schema.
rapidjson::SchemaDocument schema(sd);
rapidjson::SchemaValidator validator(schema);
if (!doc.Accept(validator)) {
@@ -66,13 +71,12 @@
rapidjson::Document doc;
rapidjson::ParseResult ok = doc.Parse(json.c_str());
if (!ok) {
- FX_LOGS(ERROR) << "error parsing config as JSON: "
- << rapidjson::GetParseError_En(ok.Code()) << "("
- << ok.Offset() << ")";
+ FX_LOGS(ERROR) << "error parsing config as JSON at offset " << ok.Offset()
+ << " " << rapidjson::GetParseError_En(ok.Code());
return ZX_ERR_INTERNAL;
}
- if (!CheckSchema(doc)) {
+ if (!CheckAgainstSchema(doc)) {
return ZX_ERR_INTERNAL;
}