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:
parent
b2947f8b2c
commit
1cfcf62c68
|
|
@ -1801,17 +1801,31 @@ static int show_handler(const struct sockaddr_nl *nl,
|
||||||
{
|
{
|
||||||
struct ifaddrmsg *ifa = NLMSG_DATA(n);
|
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);
|
print_addrinfo(NULL, n, stdout);
|
||||||
|
close_json_object();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ipaddr_showdump(void)
|
static int ipaddr_showdump(void)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
if (ipadd_dump_check_magic())
|
if (ipadd_dump_check_magic())
|
||||||
exit(-1);
|
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,
|
static int restore_handler(const struct sockaddr_nl *nl,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue