Re: [PATCH 3/3] media: replace strncpy() by strscpy()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/10/2018 02:19 PM, Mauro Carvalho Chehab wrote:
> The strncpy() function is being deprecated upstream. Replace
> it by the safer strscpy().
> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx>
> ---
>  drivers/media/dvb-frontends/as102_fe.c           |  2 +-
>  drivers/media/dvb-frontends/dib7000p.c           |  3 ++-
>  drivers/media/dvb-frontends/dib8000.c            |  4 ++--
>  drivers/media/dvb-frontends/dib9000.c            |  6 ++++--
>  drivers/media/dvb-frontends/dvb-pll.c            |  2 +-
>  drivers/media/dvb-frontends/m88ds3103.c          |  2 +-
>  drivers/media/pci/bt8xx/dst.c                    |  3 ++-
>  drivers/media/pci/mantis/mantis_i2c.c            |  2 +-
>  drivers/media/pci/saa7134/saa7134-go7007.c       |  2 +-
>  drivers/media/platform/am437x/am437x-vpfe.c      |  2 +-
>  drivers/media/platform/davinci/vpfe_capture.c    |  2 +-
>  drivers/media/platform/davinci/vpif_capture.c    |  2 +-
>  drivers/media/platform/davinci/vpif_display.c    |  3 +--
>  drivers/media/platform/exynos4-is/fimc-capture.c |  2 +-
>  drivers/media/platform/exynos4-is/fimc-m2m.c     |  2 +-
>  drivers/media/platform/mtk-vpu/mtk_vpu.c         |  2 +-
>  drivers/media/platform/mx2_emmaprp.c             |  4 ++--
>  drivers/media/platform/s5p-g2d/g2d.c             |  6 +++---
>  drivers/media/platform/ti-vpe/vpe.c              |  6 +++---
>  drivers/media/platform/vicodec/vicodec-core.c    |  4 ++--
>  drivers/media/platform/vim2m.c                   |  4 ++--
>  drivers/media/radio/si4713/si4713.c              |  2 +-
>  drivers/media/usb/go7007/go7007-usb.c            | 16 ++++++++--------
>  drivers/media/usb/go7007/go7007-v4l2.c           |  2 +-
>  drivers/media/usb/hdpvr/hdpvr-video.c            |  9 +++------
>  drivers/media/usb/pulse8-cec/pulse8-cec.c        |  4 ++--
>  drivers/media/usb/pvrusb2/pvrusb2-hdw.c          |  2 +-
>  drivers/media/usb/pvrusb2/pvrusb2-v4l2.c         |  4 ++--
>  drivers/staging/media/bcm2048/radio-bcm2048.c    |  4 ++--
>  drivers/staging/media/imx/imx-ic-common.c        |  2 +-
>  drivers/staging/media/imx/imx-media-vdic.c       |  2 +-
>  drivers/staging/media/zoran/zoran_driver.c       | 10 +++++-----
>  32 files changed, 61 insertions(+), 61 deletions(-)
> 

<snip>

> diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
> index ea3ddd5a42bd..6f094dea6bc2 100644
> --- a/drivers/media/platform/davinci/vpfe_capture.c
> +++ b/drivers/media/platform/davinci/vpfe_capture.c
> @@ -1759,7 +1759,7 @@ static int vpfe_probe(struct platform_device *pdev)
>  
>  	mutex_lock(&ccdc_lock);
>  
> -	strncpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32);
> +	strscpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32);

32 -> sizeof(ccdc_cfg->name)

>  	/* Get VINT0 irq resource */
>  	res1 = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>  	if (!res1) {
> diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c
> index 62bced38db10..b246af6cc21f 100644
> --- a/drivers/media/platform/davinci/vpif_capture.c
> +++ b/drivers/media/platform/davinci/vpif_capture.c
> @@ -1254,7 +1254,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
>  	} else {
>  		std_info->l5 = std_info->vsize - (bt->vfrontporch - 1);
>  	}
> -	strncpy(std_info->name, "Custom timings BT656/1120", VPIF_MAX_NAME);
> +	strscpy(std_info->name, "Custom timings BT656/1120", VPIF_MAX_NAME);

VPIF_MAX_NAME -> sizeof(std_info->name)

>  	std_info->width = bt->width;
>  	std_info->height = bt->height;
>  	std_info->frm_fmt = bt->interlaced ? 0 : 1;
> diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c
> index 78eba66f4b2b..65f51ebef6b4 100644
> --- a/drivers/media/platform/davinci/vpif_display.c
> +++ b/drivers/media/platform/davinci/vpif_display.c
> @@ -987,8 +987,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
>  	} else {
>  		std_info->l5 = std_info->vsize - (bt->vfrontporch - 1);
>  	}
> -	strncpy(std_info->name, "Custom timings BT656/1120",
> -			VPIF_MAX_NAME);
> +	strscpy(std_info->name, "Custom timings BT656/1120", VPIF_MAX_NAME);

Ditto.

>  	std_info->width = bt->width;
>  	std_info->height = bt->height;
>  	std_info->frm_fmt = bt->interlaced ? 0 : 1;

<snip>

> diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
> index f8d35e3ac1dc..9f4bca037b59 100644
> --- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
> +++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
> @@ -615,7 +615,7 @@ static void vpu_init_ipi_handler(void *data, unsigned int len, void *priv)
>  	struct vpu_run *run = (struct vpu_run *)data;
>  
>  	vpu->run.signaled = run->signaled;
> -	strncpy(vpu->run.fw_ver, run->fw_ver, VPU_FW_VER_LEN);
> +	strscpy(vpu->run.fw_ver, run->fw_ver, VPU_FW_VER_LEN);

VPU_FW_VER_LEN -> sizeof(vpu->run.fw_ver)

>  	vpu->run.dec_capability = run->dec_capability;
>  	vpu->run.enc_capability = run->enc_capability;
>  	wake_up_interruptible(&vpu->run.wq);

<snip>

> diff --git a/drivers/media/radio/si4713/si4713.c b/drivers/media/radio/si4713/si4713.c
> index f4a53f1e856e..289bbed255cb 100644
> --- a/drivers/media/radio/si4713/si4713.c
> +++ b/drivers/media/radio/si4713/si4713.c
> @@ -1272,7 +1272,7 @@ static int si4713_g_modulator(struct v4l2_subdev *sd, struct v4l2_modulator *vm)
>  	if (vm->index > 0)
>  		return -EINVAL;
>  
> -	strncpy(vm->name, "FM Modulator", 32);
> +	strscpy(vm->name, "FM Modulator", 32);

32 -> sizeof(vm->name)

>  	vm->capability = V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_LOW |
>  		V4L2_TUNER_CAP_RDS | V4L2_TUNER_CAP_RDS_CONTROLS;
>  

<snip>

> diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
> index e082086428a4..034983c11532 100644
> --- a/drivers/media/usb/hdpvr/hdpvr-video.c
> +++ b/drivers/media/usb/hdpvr/hdpvr-video.c
> @@ -769,8 +769,7 @@ static int vidioc_enum_input(struct file *file, void *_fh, struct v4l2_input *i)
>  
>  	i->type = V4L2_INPUT_TYPE_CAMERA;
>  
> -	strncpy(i->name, iname[n], sizeof(i->name) - 1);
> -	i->name[sizeof(i->name) - 1] = '\0';
> +	strscpy(i->name, iname[n], sizeof(i->name));
>  
>  	i->audioset = 1<<HDPVR_RCA_FRONT | 1<<HDPVR_RCA_BACK | 1<<HDPVR_SPDIF;
>  
> @@ -841,8 +840,7 @@ static int vidioc_enumaudio(struct file *file, void *priv,
>  
>  	audio->capability = V4L2_AUDCAP_STEREO;
>  
> -	strncpy(audio->name, audio_iname[n], sizeof(audio->name) - 1);
> -	audio->name[sizeof(audio->name) - 1] = '\0';
> +	strscpy(audio->name, audio_iname[n], sizeof(audio->name));
>  
>  	return 0;
>  }
> @@ -874,7 +872,6 @@ static int vidioc_g_audio(struct file *file, void *private_data,
>  	audio->index = dev->options.audio_input;
>  	audio->capability = V4L2_AUDCAP_STEREO;
>  	strscpy(audio->name, audio_iname[audio->index], sizeof(audio->name));
> -	audio->name[sizeof(audio->name) - 1] = '\0';
>  	return 0;
>  }
>  
> @@ -991,7 +988,7 @@ static int vidioc_enum_fmt_vid_cap(struct file *file, void *private_data,
>  		return -EINVAL;
>  
>  	f->flags = V4L2_FMT_FLAG_COMPRESSED;
> -	strncpy(f->description, "MPEG2-TS with AVC/AAC streams", 32);
> +	strscpy(f->description, "MPEG2-TS with AVC/AAC streams", 32);

32 -> sizeof(f->description)

>  	f->pixelformat = V4L2_PIX_FMT_MPEG;
>  
>  	return 0;
> diff --git a/drivers/media/usb/pulse8-cec/pulse8-cec.c b/drivers/media/usb/pulse8-cec/pulse8-cec.c
> index 365c78b748dd..7f961fb23dc6 100644
> --- a/drivers/media/usb/pulse8-cec/pulse8-cec.c
> +++ b/drivers/media/usb/pulse8-cec/pulse8-cec.c
> @@ -435,7 +435,7 @@ static int pulse8_setup(struct pulse8 *pulse8, struct serio *serio,
>  	err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 0);
>  	if (err)
>  		return err;
> -	strncpy(log_addrs->osd_name, data, 13);
> +	strscpy(log_addrs->osd_name, data, 13);

13 -> sizeof(log_addrs->osd_name)

>  	dev_dbg(pulse8->dev, "OSD name: %s\n", log_addrs->osd_name);
>  
>  	return 0;
> @@ -566,7 +566,7 @@ static int pulse8_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
>  		char *osd_str = cmd + 1;
>  
>  		cmd[0] = MSGCODE_SET_OSD_NAME;
> -		strncpy(cmd + 1, adap->log_addrs.osd_name, 13);
> +		strscpy(cmd + 1, adap->log_addrs.osd_name, 13);

13 -> sizeof(cmd) - 1

>  		if (osd_len < 4) {
>  			memset(osd_str + osd_len, ' ', 4 - osd_len);
>  			osd_len = 4;


> diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
> index a8519da0020b..2b5b8de5982b 100644
> --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
> +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
> @@ -2459,7 +2459,7 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf,
>  		if (!(qctrl.flags & V4L2_CTRL_FLAG_READ_ONLY)) {
>  			ciptr->set_value = ctrl_cx2341x_set;
>  		}
> -		strncpy(hdw->mpeg_ctrl_info[idx].desc,qctrl.name,
> +		strscpy(hdw->mpeg_ctrl_info[idx].desc, qctrl.name,
>  			PVR2_CTLD_INFO_DESC_SIZE);

PVR2_CTLD_INFO_DESC_SIZE -> sizeof(hdw->mpeg_ctrl_info[idx].desc)

>  		hdw->mpeg_ctrl_info[idx].desc[PVR2_CTLD_INFO_DESC_SIZE-1] = 0;
>  		ciptr->default_value = qctrl.default_value;
> diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
> index cea232a3302d..666e7b89e182 100644
> --- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
> +++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
> @@ -284,7 +284,7 @@ static int pvr2_enumaudio(struct file *file, void *priv, struct v4l2_audio *vin)
>  
>  	if (vin->index > 0)
>  		return -EINVAL;
> -	strncpy(vin->name, "PVRUSB2 Audio", 14);
> +	strscpy(vin->name, "PVRUSB2 Audio", 14);

14 -> sizeof(vin->name)

>  	vin->capability = V4L2_AUDCAP_STEREO;
>  	return 0;
>  }
> @@ -293,7 +293,7 @@ static int pvr2_g_audio(struct file *file, void *priv, struct v4l2_audio *vin)
>  {
>  	/* pkt: FIXME: see above comment (VIDIOC_ENUMAUDIO) */
>  	vin->index = 0;
> -	strncpy(vin->name, "PVRUSB2 Audio", 14);
> +	strscpy(vin->name, "PVRUSB2 Audio", 14);

Ditto

>  	vin->capability = V4L2_AUDCAP_STEREO;
>  	return 0;
>  }
> diff --git a/drivers/staging/media/bcm2048/radio-bcm2048.c b/drivers/staging/media/bcm2048/radio-bcm2048.c
> index 874d290f9622..1debfbad89ee 100644
> --- a/drivers/staging/media/bcm2048/radio-bcm2048.c
> +++ b/drivers/staging/media/bcm2048/radio-bcm2048.c
> @@ -2403,7 +2403,7 @@ static int bcm2048_vidioc_g_audio(struct file *file, void *priv,
>  	if (audio->index > 1)
>  		return -EINVAL;
>  
> -	strncpy(audio->name, "Radio", 32);
> +	strscpy(audio->name, "Radio", 32);

32 -> sizeof(audio->name)

>  	audio->capability = V4L2_AUDCAP_STEREO;
>  
>  	return 0;
> @@ -2431,7 +2431,7 @@ static int bcm2048_vidioc_g_tuner(struct file *file, void *priv,
>  	if (tuner->index > 0)
>  		return -EINVAL;
>  
> -	strncpy(tuner->name, "FM Receiver", 32);
> +	strscpy(tuner->name, "FM Receiver", 32);

32 -> sizeof(tuner->name)

>  	tuner->type = V4L2_TUNER_RADIO;
>  	tuner->rangelow =
>  		dev_to_v4l2(bcm2048_get_region_bottom_frequency(bdev));

<snip>

Basically using constants instead of sizeof() as the strscpy argument defeats the
purpose of strscpy, so that needs to be fixed.

The 'strcpy' patch uses sizeof everywhere, but I saw a few other occurrences of
this in the strlcpy patch. I think the strlcpy patch needs a follow-up that
replaces any hardcoded sizes with the safer sizeof().

BTW, I really like this strncpy patch: in many cases strncpy was unsafe. Good to
fix this.

Regards,

	Hans



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux