Skip to contentSkip to conversation

missing copy_*_user checks in sbni wan driver

PATCH New [email protected] 1 participant 1 message Aug 11, 2003 Network drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 missing copy_*_user checks in sbni wan driver

drivers/net/wan/sbni.c +7 -4
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/net/wan/sbni.c linux-2.5/drivers/net/wan/sbni.c
@@ -1287,8 +1287,9 @@ sbni_ioctl( struct net_device  *dev,  st
 		error = verify_area( VERIFY_WRITE, ifr->ifr_data,
 				     sizeof(struct sbni_in_stats) );
 		if( !error )
-			copy_to_user( ifr->ifr_data, &nl->in_stats,
-				      sizeof(struct sbni_in_stats) );
+			if (copy_to_user( ifr->ifr_data, &nl->in_stats,
+				      sizeof(struct sbni_in_stats) ))
+				return -EFAULT;
 		break;
 
 	case  SIOCDEVRESINSTATS :
@@ -1307,7 +1308,8 @@ sbni_ioctl( struct net_device  *dev,  st
 		error = verify_area( VERIFY_WRITE, ifr->ifr_data,
 				     sizeof flags );
 		if( !error )
-			copy_to_user( ifr->ifr_data, &flags, sizeof flags );
+			if (copy_to_user( ifr->ifr_data, &flags, sizeof flags ))
+				return -EFAULT;
 		break;
 
 	case  SIOCDEVSHWSTATE :
@@ -1339,7 +1341,8 @@ sbni_ioctl( struct net_device  *dev,  st
 					  sizeof slave_name )) != 0 )
 			return  error;
 
-		copy_from_user( slave_name, ifr->ifr_data, sizeof slave_name );
+		if (copy_from_user( slave_name, ifr->ifr_data, sizeof slave_name ))
+			return -EFAULT;
 		slave_dev = dev_get_by_name( slave_name );
 		if( !slave_dev  ||  !(slave_dev->flags & IFF_UP) ) {
 			printk( KERN_ERR "%s: trying to enslave non-active "