diff mbox series

[v2,26/28] video: fbdev: uvesafb: Fix string related warnings

Message ID 20201128224114.1033617-27-sam@ravnborg.org (mailing list archive)
State New, archived
Headers show
Series drivers/video: W=1 warning fixes | expand

Commit Message

Sam Ravnborg Nov. 28, 2020, 10:41 p.m. UTC
Two W=1 string related warnings.
- Using strncpy to copy string without null-termination generates a
  warning.  Use memcpy to copy only the relevant chars

- Fix a potential bug with a very long string, subtract one from the
  length to make room for the termination null.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Michal Januszewski <spock@gentoo.org>
Cc: linux-fbdev@vger.kernel.org
---
 drivers/video/fbdev/uvesafb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Thomas Zimmermann Dec. 1, 2020, 2:19 p.m. UTC | #1
Hi

Am 28.11.20 um 23:41 schrieb Sam Ravnborg:
> Two W=1 string related warnings.
> - Using strncpy to copy string without null-termination generates a
>    warning.  Use memcpy to copy only the relevant chars
> 
> - Fix a potential bug with a very long string, subtract one from the
>    length to make room for the termination null.
> 
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> Cc: Michal Januszewski <spock@gentoo.org>
> Cc: linux-fbdev@vger.kernel.org
> ---
>   drivers/video/fbdev/uvesafb.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
> index 8ee0fc9c63cf..45dc8da191e4 100644
> --- a/drivers/video/fbdev/uvesafb.c
> +++ b/drivers/video/fbdev/uvesafb.c
> @@ -423,7 +423,7 @@ static int uvesafb_vbe_getinfo(struct uvesafb_ktask *task,
>   	task->t.flags = TF_VBEIB;
>   	task->t.buf_len = sizeof(struct vbe_ib);
>   	task->buf = &par->vbe_ib;
> -	strncpy(par->vbe_ib.vbe_signature, "VBE2", 4);
> +	memcpy(par->vbe_ib.vbe_signature, "VBE2", 4);
>   
>   	err = uvesafb_exec(task);
>   	if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
> @@ -1871,7 +1871,7 @@ static ssize_t v86d_show(struct device_driver *dev, char *buf)
>   static ssize_t v86d_store(struct device_driver *dev, const char *buf,
>   		size_t count)
>   {
> -	strncpy(v86d_path, buf, PATH_MAX);
> +	strncpy(v86d_path, buf, PATH_MAX - 1);

 From lookign a the drive rcode, I assume that the code never touches 
the final byte in v86d_path. So it remains \0 indefinitely.

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

>   	return count;
>   }
>   static DRIVER_ATTR_RW(v86d);
>
diff mbox series

Patch

diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 8ee0fc9c63cf..45dc8da191e4 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -423,7 +423,7 @@  static int uvesafb_vbe_getinfo(struct uvesafb_ktask *task,
 	task->t.flags = TF_VBEIB;
 	task->t.buf_len = sizeof(struct vbe_ib);
 	task->buf = &par->vbe_ib;
-	strncpy(par->vbe_ib.vbe_signature, "VBE2", 4);
+	memcpy(par->vbe_ib.vbe_signature, "VBE2", 4);
 
 	err = uvesafb_exec(task);
 	if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
@@ -1871,7 +1871,7 @@  static ssize_t v86d_show(struct device_driver *dev, char *buf)
 static ssize_t v86d_store(struct device_driver *dev, const char *buf,
 		size_t count)
 {
-	strncpy(v86d_path, buf, PATH_MAX);
+	strncpy(v86d_path, buf, PATH_MAX - 1);
 	return count;
 }
 static DRIVER_ATTR_RW(v86d);