ipaddress: Fix segfault in 'addr showdump'

Obviously, 'addr showdump' feature wasn't adjusted to json output
support. As a consequence, calls to print_string() in print_addrinfo()
tried to dereference a NULL FILE pointer.

Fixes: d0e720111a ("ip: ipaddress.c: add support for json output")
Signed-off-by: Phil Sutter <phil@nwl.cc>
This commit is contained in:
Phil Sutter 2017-09-12 16:58:12 +02:00 committed by Stephen Hemminger
parent b2947f8b2c
commit 1cfcf62c68

View File

@ -1801,17 +1801,31 @@ static int show_handler(const struct sockaddr_nl *nl,
{
struct ifaddrmsg *ifa = NLMSG_DATA(n);
printf("if%d:\n", ifa->ifa_index);
open_json_object(NULL);
print_int(PRINT_ANY, "index", "if%d:\n", ifa->ifa_index);
print_addrinfo(NULL, n, stdout);
close_json_object();
return 0;
}
static int ipaddr_showdump(void)
{
int err;
if (ipadd_dump_check_magic())
exit(-1);
exit(rtnl_from_file(stdin, &show_handler, NULL));
new_json_obj(json, stdout);
open_json_object(NULL);
open_json_array(PRINT_JSON, "addr_info");
err = rtnl_from_file(stdin, &show_handler, NULL);
close_json_array(PRINT_JSON, NULL);
close_json_object();
delete_json_obj();
exit(err);
}
static int restore_handler(const struct sockaddr_nl *nl,