2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-22 18:17:09 +00:00

binutils/aa_status.c: quiet verbose outputs when --json is specified

By default aa-status outputs with --verbose enabled - if --json is also
specified then aa-status would currently output in its first line "apparmor
module is loaded.":

aa-status --json | head -n1
apparmor module is loaded.

And only after this the actual json output would follow. This then results in
failures to parse this JSON output:

aa-status --json | jq .
parse error: Invalid numeric literal at line 1, column 9

This in turn then breaks tools / tests which expect the output of aa-status
--json to be purely json - e.g:
https://salsa.debian.org/apparmor-team/apparmor-profiles-extra/-/blob/debian/unstable/debian/tests/policy-is-loaded#L12

So ensure dprintf() etc do not output when --json is specified to restrict the
output of aa-status to pure JSON.

Signed-off-by: Alex Murray <alex.murray@canonical.com>
This commit is contained in:
Alex Murray 2023-08-25 09:17:21 +09:30
parent 847ab59e1c
commit f61fd42061
No known key found for this signature in database
GPG Key ID: F498D2D9DE7DAD9C

View File

@ -129,13 +129,13 @@ const char *process_statuses[] = {"enforce", "complain", "prompt", "kill", "unco
#define dprintf(...) \ #define dprintf(...) \
do { \ do { \
if (verbose) \ if (verbose && !opt_json) \
printf(__VA_ARGS__); \ printf(__VA_ARGS__); \
} while (0) } while (0)
#define dfprintf(...) \ #define dfprintf(...) \
do { \ do { \
if (verbose) \ if (verbose && !opt_json) \
fprintf(__VA_ARGS__); \ fprintf(__VA_ARGS__); \
} while (0) } while (0)