Skip to contentSkip to conversation

cx18: Read buffer overflow

PATCH In review Roel Kluin 2 participants 2 messages Jul 29, 2009 – Jul 30, 2009 Media (V4L/DVB)

lore
Share & tools
lore

Roel Kluin

author
#0 lore raw

PATCH 1/1 cx18: Read buffer overflow

The guard mistakenly tests against sizeof(freqs) instead of ARRAY_SIZE(freqs).

---

Quoted 1 line · Andy Walls

The cx18 driver suffers from the exact same defect in cx18-controls.c.

Thanks, if not already applied, here is it.

drivers/media/video/ivtv/ivtv-controls.c +2 -1
index a3b77ed..4a9c8ce 100644
@@ -17,6 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include <linux/kernel.h>
 
 #include "ivtv-driver.h"
 #include "ivtv-cards.h"
@@ -281,7 +282,7 @@ int ivtv_s_ext_ctrls(struct file *file, void *fh, struct v4l2_ext_controls *c)
 		idx = p.audio_properties & 0x03;
 		/* The audio clock of the digitizer must match the codec sample
 		   rate otherwise you get some very strange effects. */
-		if (idx < sizeof(freqs))
+		if (idx < ARRAY_SIZE(freqs))
 			ivtv_call_all(itv, audio, s_clock_freq, freqs[idx]);
 		return err;
 	}
#1 lore raw
Quoted 9 lines · Roel Kluin

The guard mistakenly tests against sizeof(freqs) instead of ARRAY_SIZE(freqs).

---

Quoted 1 line · Andy Walls

The cx18 driver suffers from the exact same defect in cx18-controls.c.

Thanks, if not already applied, here is it.

Thanks. They've already made it to the main v4l-dvb repository

http://linuxtv.org/hg/v4l-dvb/rev/83131c18cb5f
http://linuxtv.org/hg/v4l-dvb/rev/f8c53e25ce11

Regards,
Andy

Quoted 22 lines
drivers/media/video/ivtv/ivtv-controls.c +2 -1
index a3b77ed..4a9c8ce 100644
@@ -17,6 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include <linux/kernel.h>
 
 #include "ivtv-driver.h"
 #include "ivtv-cards.h"
@@ -281,7 +282,7 @@ int ivtv_s_ext_ctrls(struct file *file, void *fh, struct v4l2_ext_controls *c)
 		idx = p.audio_properties & 0x03;
 		/* The audio clock of the digitizer must match the codec sample
 		   rate otherwise you get some very strange effects. */
-		if (idx < sizeof(freqs))
+		if (idx < ARRAY_SIZE(freqs))
 			ivtv_call_all(itv, audio, s_clock_freq, freqs[idx]);
 		return err;
 	}