net/x25: fix null_x25_address handling
o x25_find_listener(): the compare for the null_x25_address was wrong. We have to check the x25_addr of the listener socket instead of the x25_addr of the incomming call. o x25_bind(): it was not possible to bind a socket to null_x25_address Signed-off-by: Martin Schiller <ms@dev.tdt.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d449ba3d58
commit
06137619f0
|
@ -288,7 +288,7 @@ static struct sock *x25_find_listener(struct x25_address *addr,
|
|||
sk_for_each(s, &x25_list)
|
||||
if ((!strcmp(addr->x25_addr,
|
||||
x25_sk(s)->source_addr.x25_addr) ||
|
||||
!strcmp(addr->x25_addr,
|
||||
!strcmp(x25_sk(s)->source_addr.x25_addr,
|
||||
null_x25_address.x25_addr)) &&
|
||||
s->sk_state == TCP_LISTEN) {
|
||||
/*
|
||||
|
@ -688,11 +688,15 @@ static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
|||
goto out;
|
||||
}
|
||||
|
||||
len = strlen(addr->sx25_addr.x25_addr);
|
||||
for (i = 0; i < len; i++) {
|
||||
if (!isdigit(addr->sx25_addr.x25_addr[i])) {
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
/* check for the null_x25_address */
|
||||
if (strcmp(addr->sx25_addr.x25_addr, null_x25_address.x25_addr)) {
|
||||
|
||||
len = strlen(addr->sx25_addr.x25_addr);
|
||||
for (i = 0; i < len; i++) {
|
||||
if (!isdigit(addr->sx25_addr.x25_addr[i])) {
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue