|
@@ -166,6 +166,10 @@ 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");
|
|
|
+ goto err_release_firmware;
|
|
|
+ }
|
|
|
memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len);
|
|
|
cmd.wlen = len;
|
|
|
cmd.rlen = 1;
|