summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-03-23 22:47:40 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-24 15:44:59 -0800
commitf67ed26f2b3e92c0450deae3ffc3fff21c878a75 (patch)
treec4dcdb47cfb5f3ba498698cd13421d204047b219 /net
parenta1a8feed1743ec8d2af1dafa7c5321679f0a3e4f (diff)
downloadlinux-f67ed26f2b3e92c0450deae3ffc3fff21c878a75.tar.gz
linux-f67ed26f2b3e92c0450deae3ffc3fff21c878a75.tar.bz2
linux-f67ed26f2b3e92c0450deae3ffc3fff21c878a75.zip
[NET]: Ensure device name passed to SO_BINDTODEVICE is NULL terminated.
Found by Solar Designer. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/core/sock.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index 1a7e6eac90b0..e110b9004147 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -404,8 +404,9 @@ set_rcvbuf:
if (!valbool) {
sk->sk_bound_dev_if = 0;
} else {
- if (optlen > IFNAMSIZ)
- optlen = IFNAMSIZ;
+ if (optlen > IFNAMSIZ - 1)
+ optlen = IFNAMSIZ - 1;
+ memset(devname, 0, sizeof(devname));
if (copy_from_user(devname, optval, optlen)) {
ret = -EFAULT;
break;