Reviewed-by: Olli Salonen <olli.salonen@xxxxxx> Tested-by: Olli Salonen <olli.salonen@xxxxxx> On 6 October 2015 at 01:33, Laura Abbott <labbott@xxxxxxxxxxxxxxxxx> wrote: > > When reading the firmware and sending commands, the length > must be bounds checked to avoid overrunning the size of the command > buffer and smashing the stack if the firmware is not in the > expected format. Add the proper check. > > Cc: stable@xxxxxxxxxx > Signed-off-by: Laura Abbott <labbott@xxxxxxxxxxxxxxxxx> > --- > v2: Set the return code properly > --- > drivers/media/tuners/si2157.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c > index 5073821..0e1ca2b 100644 > --- a/drivers/media/tuners/si2157.c > +++ b/drivers/media/tuners/si2157.c > @@ -166,6 +166,11 @@ static int si2157_init(struct dvb_frontend *fe) > > for (remaining = fw->size; remaining > 0; remaining -= 17) { > len = fw->data[fw->size - remaining]; > + if (len > SI2157_ARGLEN) { > + dev_err(&client->dev, "Bad firmware length\n"); > + ret = -EINVAL; > + goto err_release_firmware; > + } > memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len); > cmd.wlen = len; > cmd.rlen = 1; > -- > 2.4.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html