diff options
Diffstat (limited to 'net/netrom/nr_route.c')
| -rw-r--r-- | net/netrom/nr_route.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index 915a87ba23e..2cf330162d7 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -670,14 +670,17 @@ int nr_rt_ioctl(unsigned int cmd, void __user *arg)  	case SIOCADDRT:  		if (copy_from_user(&nr_route, arg, sizeof(struct nr_route_struct)))  			return -EFAULT; -		if ((dev = nr_ax25_dev_get(nr_route.device)) == NULL) +		if (nr_route.ndigis > AX25_MAX_DIGIS)  			return -EINVAL; -		if (nr_route.ndigis < 0 || nr_route.ndigis > AX25_MAX_DIGIS) { -			dev_put(dev); +		if ((dev = nr_ax25_dev_get(nr_route.device)) == NULL)  			return -EINVAL; -		}  		switch (nr_route.type) {  		case NETROM_NODE: +			if (strnlen(nr_route.mnemonic, 7) == 7) { +				ret = -EINVAL; +				break; +			} +  			ret = nr_add_node(&nr_route.callsign,  				nr_route.mnemonic,  				&nr_route.neighbour,  |