Skip to contentSkip to conversation

Does this correct a bug in ibmcam.c?

PATCH In review Lee Brown 2 participants 2 messages Mar 12, 2001

lore
Share & tools
lore

Lee Brown

author
#0 lore raw

PATCH 1/1 Does this correct a bug in ibmcam.c?

I had problems with copy_from_user.

Please CC me as I am not on this list.
__________________________________

ibmcam.c renamed from ibmcam.c.orig +9 -8
@@ -2527,16 +2527,17 @@
 		}
 		case VIDIOCSCHAN:
 		{
-			int v;
+			int chan;
 
-			if (copy_from_user(&v, arg, sizeof(v)))
-				return -EFAULT;
-			if ((v < 0) || (v >= 3)) /* 3 grades of lighting conditions */
-				return -EINVAL;
-			if (v != ibmcam->vchan.channel) {
-				ibmcam->vchan.channel = v;
+			chan = (int)arg;
+		
+			if ((chan < 0) || (chan >= 3)) /* 3 grades of lighting conditions */ 
+			 	return -EINVAL;			
+	
+			if (chan != ibmcam->vchan.channel) { 	
+				ibmcam->vchan.channel = chan; 			
 				usb_ibmcam_change_lighting_conditions(ibmcam);
-			}
+ 			}
 			return 0;
 		}
 		case VIDIOCGPICT:
Signature · 1 line
Lee Brown Jr.
#1 lore raw
Quoted 10 lines
ibmcam.c renamed from ibmcam.c.orig +3 -6
+			int chan;
 
-			if (copy_from_user(&v, arg, sizeof(v)))
-				return -EFAULT;
-			if ((v < 0) || (v >= 3)) /* 3 grades of lighting conditions */
-				return -EINVAL;
-			if (v != ibmcam->vchan.channel) {
-				ibmcam->vchan.channel = v;
+			chan = (int)arg;
+		

ibmcam.c line 2542

Quoted 10 lines
ibmcam.c renamed from ibmcam.c.orig +6 -1
+			if ((chan < 0) || (chan >= 3)) /* 3 grades of lighting conditions */ 
+			 	return -EINVAL;			
+	
+			if (chan != ibmcam->vchan.channel) { 	
+				ibmcam->vchan.channel = chan; 			
 				usb_ibmcam_change_lighting_conditions(ibmcam);
-			}
+ 			}
 			return 0;
 		}

This change is wrong. I think you are calling the ioctl wrongly