diff options
Diffstat (limited to 'net/decnet/sysctl_net_decnet.c')
-rw-r--r-- | net/decnet/sysctl_net_decnet.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/net/decnet/sysctl_net_decnet.c b/net/decnet/sysctl_net_decnet.c index ff65e9ae6..c1931c867 100644 --- a/net/decnet/sysctl_net_decnet.c +++ b/net/decnet/sysctl_net_decnet.c @@ -54,6 +54,22 @@ static struct ctl_table_header *dn_table_header = NULL; #define ISALPHA(x) (ISLOWER(x) || ISUPPER(x)) #define INVALID_END_CHAR(x) (ISNUM(x) || ISALPHA(x)) +static void strip_it(char *str) +{ + for(;;) { + switch(*str) { + case ' ': + case '\n': + case '\r': + case ':': + *str = 0; + case 0: + return; + } + str++; + } +} + /* * Simple routine to parse an ascii DECnet address * into a network order address. @@ -159,8 +175,9 @@ static int dn_node_address_handler(ctl_table *table, int write, return -EFAULT; addr[len] = 0; + strip_it(addr); - if (parse_addr(&dnaddr, buffer)) + if (parse_addr(&dnaddr, addr)) return -EINVAL; dn_dev_devices_off(); @@ -257,8 +274,6 @@ static int dn_def_dev_handler(ctl_table *table, int write, } if (write) { - int i; - if (*lenp > 16) return -E2BIG; @@ -266,9 +281,7 @@ static int dn_def_dev_handler(ctl_table *table, int write, return -EFAULT; devname[*lenp] = 0; - for(i = 0; i < (*lenp); i++) - if (devname[i] == '\n') - devname[i] = 0; + strip_it(devname); if ((dev = __dev_get_by_name(devname)) == NULL) return -ENODEV; |