In both cases, the json string is short, so we can print it, which is useful
for diagnosing invalid data in packages. But we need escape non-printable
characters.
https://bugzilla.redhat.com/show_bug.cgi?id=
2152685
I went over the rest of the codebase, and it seems that other calls to
json_parse() don't have this problem.
#include "compress.h"
#include "constants.h"
#include "dissect-image.h"
+#include "escape.h"
#include "fd-util.h"
#include "format-table.h"
#include "fs-util.h"
_cleanup_(json_variant_unrefp) JsonVariant *v = NULL;
r = json_parse(pkgmeta_json, 0, &v, NULL, NULL);
- if (r < 0)
- log_warning_errno(r, "json_parse on %s failed, ignoring: %m", pkgmeta_json);
- else {
+ if (r < 0) {
+ _cleanup_free_ char *esc = cescape(pkgmeta_json);
+ log_warning_errno(r, "json_parse on \"%s\" failed, ignoring: %m", strnull(esc));
+ } else {
const char *module_name;
JsonVariant *module_json;
#include "dlfcn-util.h"
#include "elf-util.h"
#include "errno-util.h"
+#include "escape.h"
#include "fileio.h"
#include "fd-util.h"
#include "format-util.h"
}
r = json_parse(payload, 0, &v, NULL, NULL);
- if (r < 0)
- return log_error_errno(r, "json_parse on %s failed: %m", payload);
+ if (r < 0) {
+ _cleanup_free_ char *esc = cescape(payload);
+ return log_error_errno(r, "json_parse on \"%s\" failed: %m", strnull(esc));
+ }
/* If we have a build-id, merge it in the same JSON object so that it appears all
* nicely together in the logs/metadata. */