When the input parameter node is NULL, memory is allocated to it.

To later free the memory, introduce a new variable lnode to track when
this happens.

Submitted by:	Thomas Rix <trix@juniper.net>
Reviewed by:	emax
Approved by:	sjg (mentor)
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D9878
This commit is contained in:
Stephen J. Kiernan 2017-06-06 22:17:55 +00:00
parent ba01ab64cc
commit 63c1ff65d1

View file

@ -103,13 +103,14 @@ socket_open(char const *node)
int s, mib[4], num;
size_t size;
struct nodeinfo *nodes;
char *lnode = NULL;
num = find_hci_nodes(&nodes);
if (num == 0)
errx(7, "Could not find HCI nodes");
if (node == NULL) {
node = strdup(nodes[0].name);
node = lnode = strdup(nodes[0].name);
if (num > 1)
fprintf(stdout, "Using HCI node: %s\n", node);
}
@ -130,6 +131,7 @@ socket_open(char const *node)
if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0)
err(3, "Could not connect socket, node=%s", node);
free(lnode);
memset(&filter, 0, sizeof(filter));
bit_set(filter.event_mask, NG_HCI_EVENT_COMMAND_COMPL - 1);
bit_set(filter.event_mask, NG_HCI_EVENT_COMMAND_STATUS - 1);