]> Pileus Git - ~andy/linux/blobdiff - net/netrom/nr_route.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[~andy/linux] / net / netrom / nr_route.c
index 915a87ba23e188faa31861aac9a38d3b2f180827..2cf330162d7e8e21ddcbc21eb741336e332ec422 100644 (file)
@@ -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,