summaryrefslogtreecommitdiffstats
path: root/pand
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-02-15 08:21:57 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-02-15 08:21:57 +0000
commit2924bca7d31d8e1b2ca239316b603082e0a4cb33 (patch)
treec28f0f8cc9728e852adb01f302d38815e2c0f4e7 /pand
parent65d1a12cfff5d53e535134dbf03eedcc02ffb589 (diff)
Fix problems with the size limitation of netdev string
Diffstat (limited to 'pand')
-rw-r--r--pand/bnep.c5
-rw-r--r--pand/main.c12
2 files changed, 12 insertions, 5 deletions
diff --git a/pand/bnep.c b/pand/bnep.c
index 3e7283f3..0f935d39 100644
--- a/pand/bnep.c
+++ b/pand/bnep.c
@@ -184,12 +184,13 @@ static int bnep_connadd(int sk, uint16_t role, char *dev)
{
struct bnep_connadd_req req;
- strcpy(req.device, dev);
+ strncpy(req.device, dev, 16);
+ req.device[15] = '\0';
req.sock = sk;
req.role = role;
if (ioctl(ctl, bnepconnadd, &req))
return -1;
- strcpy(dev, req.device);
+ strncpy(dev, req.device, 16);
return 0;
}
diff --git a/pand/main.c b/pand/main.c
index c01bb6b6..2f258aa3 100644
--- a/pand/main.c
+++ b/pand/main.c
@@ -188,7 +188,9 @@ static int do_listen(void)
while (!terminate) {
socklen_t alen = sizeof(l2a);
+ char devname[16];
int nsk;
+
nsk = accept(sk, (struct sockaddr *) &l2a, &alen);
if (nsk < 0) {
syslog(LOG_ERR, "Accept failed. %s(%d)",
@@ -207,14 +209,17 @@ static int do_listen(void)
continue;
}
- if (!bnep_accept_connection(nsk, role, netdev)) {
+ strncpy(devname, netdev, 16);
+ devname[15] = '\0';
+
+ if (!bnep_accept_connection(nsk, role, devname)) {
char str[40];
ba2str(&l2a.l2_bdaddr, str);
syslog(LOG_INFO, "New connection from %s %s",
str, netdev);
- run_devup(netdev, str, sk, nsk);
+ run_devup(devname, str, sk, nsk);
} else {
syslog(LOG_ERR, "Connection failed. %s(%d)",
strerror(errno), errno);
@@ -624,7 +629,8 @@ int main(int argc, char **argv)
break;
case 'e':
- strcpy(netdev, optarg);
+ strncpy(netdev, optarg, 16);
+ netdev[15] = '\0';
break;
case 'n':