Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b85c2d4 authored by Quentin Monnet's avatar Quentin Monnet Committed by Daniel Borkmann
Browse files

tools: bpftool: fix crash on bad parameters with JSON



If bad or unrecognised parameters are specified after JSON output is
requested, `usage()` will try to output null JSON object before the
writer is created.

To prevent this, create the writer as soon as the `--json` option is
parsed.

Fixes: 004b45c0 ("tools: bpftool: provide JSON output for all possible commands")
Reported-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Acked-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent a39e17b2
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -291,7 +291,15 @@ int main(int argc, char **argv)
			pretty_output = true;
			/* fall through */
		case 'j':
			if (!json_output) {
				json_wtr = jsonw_new(stdout);
				if (!json_wtr) {
					p_err("failed to create JSON writer");
					return -1;
				}
				json_output = true;
			}
			jsonw_pretty(json_wtr, pretty_output);
			break;
		case 'f':
			show_pinned = true;
@@ -306,15 +314,6 @@ int main(int argc, char **argv)
	if (argc < 0)
		usage();

	if (json_output) {
		json_wtr = jsonw_new(stdout);
		if (!json_wtr) {
			p_err("failed to create JSON writer");
			return -1;
		}
		jsonw_pretty(json_wtr, pretty_output);
	}

	bfd_init();

	ret = cmd_select(cmds, argc, argv, do_help);