media: tc358743: limit msg.len to CEC_MAX_MSG_SIZE
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 24 Aug 2022 07:00:24 +0000 (09:00 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Tue, 30 Aug 2022 05:37:24 +0000 (07:37 +0200)
I expect that the hardware will have limited this to 16, but just in
case it hasn't, check for this corner case.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/i2c/tc358743.c

index e18b894..804b8ee 100644 (file)
@@ -964,6 +964,8 @@ static void tc358743_cec_handler(struct v4l2_subdev *sd, u16 intstatus,
 
                v = i2c_rd32(sd, CECRCTR);
                msg.len = v & 0x1f;
+               if (msg.len > CEC_MAX_MSG_SIZE)
+                       msg.len = CEC_MAX_MSG_SIZE;
                for (i = 0; i < msg.len; i++) {
                        v = i2c_rd32(sd, CECRBUF1 + i * 4);
                        msg.msg[i] = v & 0xff;