[media] cx22700: Fix potential buffer overflow
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 5 Nov 2014 11:42:22 +0000 (09:42 -0200)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 5 Nov 2014 11:42:22 +0000 (09:42 -0200)
As new FEC types were added, we need a check to avoid overflows:
drivers/media/dvb-frontends/cx22700.c:172 cx22700_set_tps() error: buffer overflow 'fec_tab' 6 <= 6
drivers/media/dvb-frontends/cx22700.c:173 cx22700_set_tps() error: buffer overflow 'fec_tab' 6 <= 6

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/cx22700.c

index 3d399d9a6343cb0d841d026ad27ca77dee96880b..86563260d0f2f76eb9e9cf193194bc5adb88ed4f 100644 (file)
@@ -169,6 +169,9 @@ static int cx22700_set_tps(struct cx22700_state *state,
 
        cx22700_writereg (state, 0x04, val);
 
+       if (p->code_rate_HP - FEC_1_2 >= sizeof(fec_tab) ||
+           p->code_rate_LP - FEC_1_2 >= sizeof(fec_tab))
+               return -EINVAL;
        val = fec_tab[p->code_rate_HP - FEC_1_2] << 3;
        val |= fec_tab[p->code_rate_LP - FEC_1_2];