diff mbox series

[1/2] media: cec: extron-da-hd-4k-plus: Fix Wformat-truncation

Message ID 20250331-v614-v1-1-9bc69a873720@chromium.org (mailing list archive)
State New
Headers show
Series media: Fix gcc8 warnings | expand

Commit Message

Ricardo Ribalda March 31, 2025, 4:38 p.m. UTC
Convince gcc8 that the port, initiator and destination fits in a single
char, despite the fact that they are 4 bits wide.

drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c:1014:44: warning: 'DCEC' directive output may be truncated writing 4 bytes into a region of size between 0 and 53 [-Wformat-truncation=]

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Hans Verkuil April 1, 2025, 7:46 a.m. UTC | #1
On 31/03/2025 18:38, Ricardo Ribalda wrote:
> Convince gcc8 that the port, initiator and destination fits in a single
> char, despite the fact that they are 4 bits wide.
> 
> drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c:1014:44: warning: 'DCEC' directive output may be truncated writing 4 bytes into a region of size between 0 and 53 [-Wformat-truncation=]
> 
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c b/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
> index cfbfc4c1b2e67fec9434aa6852ab465ad8c11225..e1a2a676bcaf9c313041ce8074c85636cfe4b2da 100644
> --- a/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
> +++ b/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
> @@ -1012,8 +1012,9 @@ static int extron_cec_adap_transmit(struct cec_adapter *adap, u8 attempts,
>  	for (i = 0; i < msg->len - 1; i++)
>  		sprintf(buf + i * 3, "%%%02X", msg->msg[i + 1]);
>  	snprintf(cmd, sizeof(cmd), "W%c%u*%u*%u*%sDCEC",
> -		 port->direction, port->port.port,
> -		 cec_msg_initiator(msg), cec_msg_destination(msg), buf);
> +		 port->direction, port->port.port % 10,
> +		 cec_msg_initiator(msg) % 10, cec_msg_destination(msg) % 10,

This is definitely wrong, since initiator/destination is a value from 0-15.
So % 10 will mess that up.

I'm preparing a patch of my own for this.

Regards,

	Hans

> +		 buf);
>  	return extron_send_and_wait(port->extron, port, cmd, NULL);
>  }
>  
>
diff mbox series

Patch

diff --git a/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c b/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
index cfbfc4c1b2e67fec9434aa6852ab465ad8c11225..e1a2a676bcaf9c313041ce8074c85636cfe4b2da 100644
--- a/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
+++ b/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
@@ -1012,8 +1012,9 @@  static int extron_cec_adap_transmit(struct cec_adapter *adap, u8 attempts,
 	for (i = 0; i < msg->len - 1; i++)
 		sprintf(buf + i * 3, "%%%02X", msg->msg[i + 1]);
 	snprintf(cmd, sizeof(cmd), "W%c%u*%u*%u*%sDCEC",
-		 port->direction, port->port.port,
-		 cec_msg_initiator(msg), cec_msg_destination(msg), buf);
+		 port->direction, port->port.port % 10,
+		 cec_msg_initiator(msg) % 10, cec_msg_destination(msg) % 10,
+		 buf);
 	return extron_send_and_wait(port->extron, port, cmd, NULL);
 }