Re: [PATCH] drm/gud: NUL-terminate TV mode names read from the device

Ruben Wauters <[email protected]>
Newsgroups org.freedesktop.lists.dri-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sun, 2026-08-16 at 14:22 +0530, Deepanshu Kartikey wrote:
> gud_connector_add_tv_mode() reads a buffer of fixed-size mode names from
> the USB device and passes pointers into it to
> drm_mode_create_tv_properties_legacy(), which calls strlen() on each one.
> Nothing guarantees the device NUL-terminates a name, so strlen() can run
> past the end of a slot and, for the last mode, past the end of the
> allocation.
> 
> Terminate each name at the end of its slot before use.
> 
> Fixes: 40e1a70b4aed ("drm: Add GUD USB Display driver")
> Reported-by: [email protected]
> Closes: https://syzkaller.appspot.com/bug?extid=916c888ba5f1a54c9526
> Tested-by: [email protected]
> Signed-off-by: Deepanshu Kartikey <[email protected]>
Acked-by: Ruben Wauters <[email protected]>
> ---
>  drivers/gpu/drm/gud/gud_connector.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/gud/gud_connector.c b/drivers/gpu/drm/gud/gud_connector.c
> index ea0cca58b7c8..5c0065c876a7 100644
> --- a/drivers/gpu/drm/gud/gud_connector.c
> +++ b/drivers/gpu/drm/gud/gud_connector.c
> @@ -396,8 +396,13 @@ static int gud_connector_add_tv_mode(struct gud_device *gdrm, struct drm_connect
>  	}
>  
>  	num_modes = ret / GUD_CONNECTOR_TV_MODE_NAME_LEN;
> -	for (i = 0; i < num_modes; i++)
> -		modes[i] = &buf[i * GUD_CONNECTOR_TV_MODE_NAME_LEN];
> +	for (i = 0; i < num_modes; i++) {
> +		char *mode = &buf[i * GUD_CONNECTOR_TV_MODE_NAME_LEN];
> +
> +		/* The device is not trusted to NUL-terminate the name */
> +		mode[GUD_CONNECTOR_TV_MODE_NAME_LEN - 1] = '\0';
> +		modes[i] = mode;
> +	}
>  
>  	ret = drm_mode_create_tv_properties_legacy(connector->dev, num_modes, modes);
>  free:
signature.asc (application/pgp-signature, 870 B)
-----BEGIN PGP SIGNATURE-----

iQJPBAABCAA5FiEE3obNNdPQ9V5CQi2Y0n5QwFCuDOEFAmqDKpkbFIAAAAAABAAO
bWFudTIsMi41KzEuMTIsMiwyAAoJENJ+UMBQrgzhE3AP/1Om9r+dmc3DfoqZpu9r
h8BqYFZbWu42Q+YeIZLJfBjenpIh2PZcv0bL0ztByc3X9H+yVee7CjLYgAOkLbNb
sXrnhEAYRk+S6c57l74gjb1p7YZzOIaDhaUCnpIvBnllwOf0iUPax5g989Khpihu
vAX7UvbC9SxRPLUJQOrVA5yOe/iLiOBHDLMzvndLiQyL2FfEj+c8ImH9cCnqU3c0
Br3A9f0CUNl3yh+6PJiGSfqgD1utJkvr+XJHLiMUYHbAKQrGKnsy/JDa61lFzh17
J57I6dmriSfvjqh34j+jmogwGAnT5sUwYTaRJhIjRDlT9eIuriYcTjGM+UCNO3q5
I7SFvPWEGzK5sdhjhBC8wW4i1M6iLUDBDWnpPL7rczxrWrzedT2rkKO+gWPfPgSA
nMjQsB9EY1c2/+7fghF3jNnDp7CjnlwJzhPTXp8MRamnfH2ch+qz1qhhEB1zKgS6
rJrh6vd9OS6B3NHpG+FU6QXg3VYkN+YLDTpTuTUQdneJbxfwriCC2eXWNSjKLqRs
XOGWx6TQh2qaPhwNuH/Vapv9gQa4lrL7PGOaignCZYg61aeN58SMl7zjLdRHymxt
YPp0S+lEW4HH+9S8ptvUIC81NrCLy83TKKSafzDdyge20wDciHgSLdiYDUFkJxDH
QcFwvHbpiON+cnsEHmoN4lEo
=FbGl
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.