From 9838da04bfaadbd8fed2f996b4aae79da48ee12f Mon Sep 17 00:00:00 2001 From: andrew hendry Date: Sun, 14 Feb 2010 02:00:45 +0000 Subject: [PATCH] --- yaml --- r: 184121 b: refs/heads/master c: a9288525d2aed806c1b8a785c226d4a9e6371650 h: refs/heads/master i: 184119: ec3759fdcfa8d087ca8062c68d634613b01c8b65 v: v3 --- [refs] | 2 +- trunk/net/x25/af_x25.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 56e023228089..7c20e0999f75 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b18e7a06857833d2c7c8c8457e5a3a7c3327f643 +refs/heads/master: a9288525d2aed806c1b8a785c226d4a9e6371650 diff --git a/trunk/net/x25/af_x25.c b/trunk/net/x25/af_x25.c index 6c7104edec60..9796f3ed1edb 100644 --- a/trunk/net/x25/af_x25.c +++ b/trunk/net/x25/af_x25.c @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -648,7 +649,7 @@ static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) { struct sock *sk = sock->sk; struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr; - int rc = 0; + int len, i, rc = 0; lock_kernel(); if (!sock_flag(sk, SOCK_ZAPPED) || @@ -658,6 +659,14 @@ 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; + } + } + x25_sk(sk)->source_addr = addr->sx25_addr; x25_insert_socket(sk); sock_reset_flag(sk, SOCK_ZAPPED);