diff mbox

wireless: wext: terminate ifr name coming from userspace

Message ID 20170718042318.5309-1-alexander.levin@verizon.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Levin, Alexander (Sasha Levin) July 18, 2017, 4:23 a.m. UTC
ifr name is assumed to be a valid string by the kernel, but nothing
was forcing username to pass a valid string.

In turn, this would cause panics as we tried to access the string
past it's valid memory.

Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
 net/core/dev_ioctl.c   | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

index 82fd4c9c4a1b..7657ad6bc13d 100644

Comments

David Miller July 19, 2017, 8:33 p.m. UTC | #1
From: "Levin, Alexander (Sasha Levin)" <alexander.levin@verizon.com>
Date: Tue, 18 Jul 2017 04:23:16 +0000

> ifr name is assumed to be a valid string by the kernel, but nothing
> was forcing username to pass a valid string.
> 
> In turn, this would cause panics as we tried to access the string
> past it's valid memory.
> 
> Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

Applied and queued up for -stable.

dev_ifname() has the same bug, I'll post a patch for that.
diff mbox

Patch

--- a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
@@ -424,6 +424,8 @@  int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg)
 		if (copy_from_user(&iwr, arg, sizeof(iwr)))
 			return -EFAULT;
 
+		iwr.ifr_name[sizeof(iwr.ifr_name) - 1] = 0;
+
 		return wext_handle_ioctl(net, &iwr, cmd, arg);
 	}