isdn: fix strlen() usage
authorDan Carpenter <error27@gmail.com>
Sat, 10 Jul 2010 04:31:11 +0000 (04:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Jul 2010 03:21:43 +0000 (20:21 -0700)
There was a missing "else" statement so the original code overflowed if
->master->name was too long.  Also the ->slave and ->master buffers can
hold names with 9 characters and a NULL so I cleaned it up to allow
another character.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/isdn/i4l/isdn_net.c

index 8c85d1e..26d44c3 100644 (file)
@@ -2924,16 +2924,17 @@ isdn_net_getcfg(isdn_net_ioctl_cfg * cfg)
                cfg->dialtimeout = lp->dialtimeout >= 0 ? lp->dialtimeout / HZ : -1;
                cfg->dialwait = lp->dialwait / HZ;
                if (lp->slave) {
-                       if (strlen(lp->slave->name) > 8)
+                       if (strlen(lp->slave->name) >= 10)
                                strcpy(cfg->slave, "too-long");
                        else
                                strcpy(cfg->slave, lp->slave->name);
                } else
                        cfg->slave[0] = '\0';
                if (lp->master) {
-                       if (strlen(lp->master->name) > 8)
+                       if (strlen(lp->master->name) >= 10)
                                strcpy(cfg->master, "too-long");
-                       strcpy(cfg->master, lp->master->name);
+                       else
+                               strcpy(cfg->master, lp->master->name);
                } else
                        cfg->master[0] = '\0';
                return 0;