[ovs-dev] [PATCH 3/3] datapath: Check device name length more carefully in create_dp().

Ben Pfaff blp at nicira.com
Tue Apr 27 17:45:58 UTC 2010


I don't see any value in silently truncating device names.  Doing so will
sow confusion in userspace.  This commit makes too-long device names
return ENAMETOOLONG.
---
 datapath/datapath.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/datapath/datapath.c b/datapath/datapath.c
index e9590f7..4f74795 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -202,10 +202,14 @@ static int create_dp(int dp_idx, const char __user *devnamep)
 	int i;
 
 	if (devnamep) {
-		err = -EFAULT;
-		if (strncpy_from_user(devname, devnamep, IFNAMSIZ) < 0)
+		int retval = strncpy_from_user(devname, devnamep, IFNAMSIZ);
+		if (retval < 0) {
+			err = -EFAULT;
 			goto err;
-		devname[IFNAMSIZ - 1] = '\0';
+		} else if (retval >= IFNAMSIZ) {
+			err = -ENAMETOOLONG;
+			goto err;
+		}
 	} else {
 		snprintf(devname, sizeof devname, "of%d", dp_idx);
 	}
-- 
1.6.6.1





More information about the dev mailing list