media: dvb-frontends/stv0910: Fix possible buffer overflow
authorDaniel Scheller <d.scheller@gmx.net>
Mon, 3 Jul 2017 17:20:55 +0000 (13:20 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Thu, 20 Jul 2017 16:57:59 +0000 (12:57 -0400)
Fixes smatch error:

  drivers/media/dvb-frontends/stv0910.c:715 dvbs2_nbch() error: buffer overflow 'nbch[fectype]' 2 <= 28

Also, fixes the nbch array table by adding the DUMMY_PLF element at the top
to match the enums (table element order was off by one before).

Patch sent upstream aswell.

Cc: Ralph Metzler <rjkm@metzlerbros.de>
Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Tested-by: Richard Scobie <r.scobie@clear.net.nz>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/stv0910.c

index 9dfcaf5e067f792db13efcd8d1fd81eedd8ed91b..85439d3b725e3a8ab21afec9ce6340d5618d4d3d 100644 (file)
@@ -671,6 +671,7 @@ static int get_bit_error_rate_s(struct stv *state, u32 *bernumerator,
 static u32 dvbs2_nbch(enum dvbs2_mod_cod mod_cod, enum dvbs2_fectype fectype)
 {
        static u32 nbch[][2] = {
+               {    0,     0}, /* DUMMY_PLF */
                {16200,  3240}, /* QPSK_1_4, */
                {21600,  5400}, /* QPSK_1_3, */
                {25920,  6480}, /* QPSK_2_5, */
@@ -703,7 +704,7 @@ static u32 dvbs2_nbch(enum dvbs2_mod_cod mod_cod, enum dvbs2_fectype fectype)
 
        if (mod_cod >= DVBS2_QPSK_1_4 &&
            mod_cod <= DVBS2_32APSK_9_10 && fectype <= DVBS2_16K)
-               return nbch[fectype][mod_cod];
+               return nbch[mod_cod][fectype];
        return 64800;
 }