dvb-core: prevent some corruption the legacy ioctl
Subsystems (2)
PATCH 1/1 dvb-core: prevent some corruption the legacy ioctl
Quite a few of the ->diseqc_send_master_cmd() implementations don't check cmd->msg_len so it can lead to memory corruption.
Signed-off-by Dan Carpenter <[email protected]>
---
I don't think it ever makes sense for ->msg_len to be longer than ->msg but I am a newbie to this code.
drivers/media/dvb-core/dvb_frontend.c +7 -1
@@ -2403,7 +2403,13 @@ static int dvb_frontend_ioctl_legacy(struct file *file,case FE_DISEQC_SEND_MASTER_CMD :if (fe->ops.diseqc_send_master_cmd) { - err = fe->ops.diseqc_send_master_cmd (fe, (struct dvb_diseqc_master_cmd *) parg); +struct dvb_diseqc_master_cmd *cmd = parg; + +if (cmd->msg_len >sizeof (cmd->msg)) { + err = -EINVAL ; +break ; + } + err = fe->ops.diseqc_send_master_cmd (fe, cmd); fepriv->state =FESTATE_DISEQC ; fepriv->status =0 ; }