Replace deprecated NG_NODELEN with the new NG_NODESIZ. There is one

problem here still to be solved: the sockaddr_hci has still a 16 byte
field for the node name. The code currently does not correctly use the
length field in the sockaddr to handle the address length, so
node names get truncated to 15 characters when put into a sockaddr_hci.
This commit is contained in:
harti 2004-01-26 15:19:43 +00:00
parent 3a15ac7b11
commit 5e802bbf2a
3 changed files with 9 additions and 4 deletions

View File

@ -150,7 +150,7 @@ static int ng_h4_node = 0;
static int
ng_h4_open(dev_t dev, struct tty *tp)
{
char name[NG_NODELEN + 1];
char name[NG_NODESIZ];
ng_h4_info_p sc = NULL;
int s, error;
@ -733,7 +733,7 @@ static int
ng_h4_shutdown(node_p node)
{
ng_h4_info_p sc = (ng_h4_info_p) NG_NODE_PRIVATE(node);
char name[NG_NODELEN + 1];
char name[NG_NODESIZ];
/* Let old node go */
NG_NODE_SET_PRIVATE(node, NULL);

View File

@ -50,12 +50,17 @@
/*
* XXX FIXME: probably does not belong here
* Bluetooth version of struct sockaddr for raw HCI sockets
*
* XXX: sizeof(hci_node) was NG_NODELEN + 1, but NG_NODESIZ (the equivalent
* of NG_NODELEN + 1) has been bumped to 32. The code currently
* truncates the node name to sizeof(hci_node), although it would be
* possible to correctly handle this by means of the hci_len field.
*/
struct sockaddr_hci {
u_char hci_len; /* total length */
u_char hci_family; /* address family */
char hci_node[16]; /* address (size == NG_NODELEN + 1) */
char hci_node[16]; /* address */
};
/* Raw HCI socket options */

View File

@ -1009,7 +1009,7 @@ ng_btsocket_hci_raw_control(struct socket *so, u_long cmd, caddr_t data,
struct ifnet *ifp, struct thread *td)
{
ng_btsocket_hci_raw_pcb_p pcb = so2hci_raw_pcb(so);
char path[NG_NODELEN + 2];
char path[NG_NODESIZ + 1];
struct ng_mesg *msg = NULL;
int error = 0;