media: use strscpy() instead of strlcpy()
The implementation of strscpy() is more robust and safer. That's now the recommended way to copy NUL terminated strings. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Reviewed-by: Kees Cook <keescook@chromium.org> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tento commit je obsažen v:
@@ -149,7 +149,7 @@ static int cs53l32a_probe(struct i2c_client *client,
|
||||
return -EIO;
|
||||
|
||||
if (!id)
|
||||
strlcpy(client->name, "cs53l32a", sizeof(client->name));
|
||||
strscpy(client->name, "cs53l32a", sizeof(client->name));
|
||||
|
||||
v4l_info(client, "chip found @ 0x%x (%s)\n",
|
||||
client->addr << 1, client->adapter->name);
|
||||
|
@@ -1895,7 +1895,7 @@ static int imx274_probe(struct i2c_client *client,
|
||||
imx274->client = client;
|
||||
sd = &imx274->sd;
|
||||
v4l2_i2c_subdev_init(sd, client, &imx274_subdev_ops);
|
||||
strlcpy(sd->name, DRIVER_NAME, sizeof(sd->name));
|
||||
strscpy(sd->name, DRIVER_NAME, sizeof(sd->name));
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
|
||||
|
||||
/* initialize subdev media pad */
|
||||
|
@@ -987,7 +987,7 @@ static int m5mols_probe(struct i2c_client *client,
|
||||
|
||||
sd = &info->sd;
|
||||
v4l2_i2c_subdev_init(sd, client, &m5mols_ops);
|
||||
strlcpy(sd->name, MODULE_NAME, sizeof(sd->name));
|
||||
strscpy(sd->name, MODULE_NAME, sizeof(sd->name));
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
|
||||
sd->internal_ops = &m5mols_subdev_internal_ops;
|
||||
|
@@ -1165,7 +1165,7 @@ static int max2175_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt)
|
||||
if (vt->index > 0)
|
||||
return -EINVAL;
|
||||
|
||||
strlcpy(vt->name, "RF", sizeof(vt->name));
|
||||
strscpy(vt->name, "RF", sizeof(vt->name));
|
||||
vt->type = V4L2_TUNER_RF;
|
||||
vt->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
|
||||
vt->rangelow = ctx->bands_rf->rangelow;
|
||||
|
@@ -688,7 +688,7 @@ static int msp_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
#endif
|
||||
|
||||
if (!id)
|
||||
strlcpy(client->name, "msp3400", sizeof(client->name));
|
||||
strscpy(client->name, "msp3400", sizeof(client->name));
|
||||
|
||||
if (msp_reset(client) == -1) {
|
||||
dev_dbg_lvl(&client->dev, 1, msp_debug, "msp3400 not found\n");
|
||||
|
@@ -720,7 +720,7 @@ static int noon010_probe(struct i2c_client *client,
|
||||
mutex_init(&info->lock);
|
||||
sd = &info->sd;
|
||||
v4l2_i2c_subdev_init(sd, client, &noon010_ops);
|
||||
strlcpy(sd->name, MODULE_NAME, sizeof(sd->name));
|
||||
strscpy(sd->name, MODULE_NAME, sizeof(sd->name));
|
||||
|
||||
sd->internal_ops = &noon010_subdev_internal_ops;
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
|
@@ -1539,7 +1539,7 @@ static int ov965x_probe(struct i2c_client *client,
|
||||
|
||||
sd = &ov965x->sd;
|
||||
v4l2_i2c_subdev_init(sd, client, &ov965x_subdev_ops);
|
||||
strlcpy(sd->name, DRIVER_NAME, sizeof(sd->name));
|
||||
strscpy(sd->name, DRIVER_NAME, sizeof(sd->name));
|
||||
|
||||
sd->internal_ops = &ov965x_sd_internal_ops;
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
|
||||
|
@@ -1683,7 +1683,7 @@ static int s5c73m3_probe(struct i2c_client *client,
|
||||
v4l2_subdev_init(sd, &s5c73m3_subdev_ops);
|
||||
sd->owner = client->dev.driver->owner;
|
||||
v4l2_set_subdevdata(sd, state);
|
||||
strlcpy(sd->name, "S5C73M3", sizeof(sd->name));
|
||||
strscpy(sd->name, "S5C73M3", sizeof(sd->name));
|
||||
|
||||
sd->internal_ops = &s5c73m3_internal_ops;
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
|
@@ -954,7 +954,7 @@ static int s5k4ecgx_probe(struct i2c_client *client,
|
||||
sd = &priv->sd;
|
||||
/* Registering subdev */
|
||||
v4l2_i2c_subdev_init(sd, client, &s5k4ecgx_ops);
|
||||
strlcpy(sd->name, S5K4ECGX_DRIVER_NAME, sizeof(sd->name));
|
||||
strscpy(sd->name, S5K4ECGX_DRIVER_NAME, sizeof(sd->name));
|
||||
|
||||
sd->internal_ops = &s5k4ecgx_subdev_internal_ops;
|
||||
/* Support v4l2 sub-device user space API */
|
||||
|
@@ -1576,7 +1576,7 @@ static int s5k6aa_probe(struct i2c_client *client,
|
||||
|
||||
sd = &s5k6aa->sd;
|
||||
v4l2_i2c_subdev_init(sd, client, &s5k6aa_subdev_ops);
|
||||
strlcpy(sd->name, DRIVER_NAME, sizeof(sd->name));
|
||||
strscpy(sd->name, DRIVER_NAME, sizeof(sd->name));
|
||||
|
||||
sd->internal_ops = &s5k6aa_subdev_internal_ops;
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
|
@@ -1765,7 +1765,7 @@ static int saa711x_detect_chip(struct i2c_client *client,
|
||||
* the lower nibble is a gm7113c.
|
||||
*/
|
||||
|
||||
strlcpy(name, "gm7113c", CHIP_VER_SIZE);
|
||||
strscpy(name, "gm7113c", CHIP_VER_SIZE);
|
||||
|
||||
if (!autodetect && strcmp(name, id->name))
|
||||
return -EINVAL;
|
||||
@@ -1779,7 +1779,7 @@ static int saa711x_detect_chip(struct i2c_client *client,
|
||||
|
||||
/* Check if it is a CJC7113 */
|
||||
if (!memcmp(name, "1111111111111111", CHIP_VER_SIZE)) {
|
||||
strlcpy(name, "cjc7113", CHIP_VER_SIZE);
|
||||
strscpy(name, "cjc7113", CHIP_VER_SIZE);
|
||||
|
||||
if (!autodetect && strcmp(name, id->name))
|
||||
return -EINVAL;
|
||||
@@ -1825,7 +1825,7 @@ static int saa711x_probe(struct i2c_client *client,
|
||||
if (ident < 0)
|
||||
return ident;
|
||||
|
||||
strlcpy(client->name, name, sizeof(client->name));
|
||||
strscpy(client->name, name, sizeof(client->name));
|
||||
|
||||
state = devm_kzalloc(&client->dev, sizeof(*state), GFP_KERNEL);
|
||||
if (state == NULL)
|
||||
|
@@ -761,10 +761,10 @@ static int saa7127_probe(struct i2c_client *client,
|
||||
saa7127_write(sd, SAA7129_REG_FADE_KEY_COL2,
|
||||
read_result);
|
||||
state->ident = SAA7129;
|
||||
strlcpy(client->name, "saa7129", I2C_NAME_SIZE);
|
||||
strscpy(client->name, "saa7129", I2C_NAME_SIZE);
|
||||
} else {
|
||||
state->ident = SAA7127;
|
||||
strlcpy(client->name, "saa7127", I2C_NAME_SIZE);
|
||||
strscpy(client->name, "saa7127", I2C_NAME_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1981,7 +1981,7 @@ static int tvaudio_probe(struct i2c_client *client, const struct i2c_device_id *
|
||||
|
||||
/* fill required data structures */
|
||||
if (!id)
|
||||
strlcpy(client->name, desc->name, I2C_NAME_SIZE);
|
||||
strscpy(client->name, desc->name, I2C_NAME_SIZE);
|
||||
chip->desc = desc;
|
||||
chip->shadow.count = desc->registers+1;
|
||||
chip->prevmode = -1;
|
||||
|
@@ -352,8 +352,8 @@ static int video_i2c_querycap(struct file *file, void *priv,
|
||||
struct video_i2c_data *data = video_drvdata(file);
|
||||
struct i2c_client *client = data->client;
|
||||
|
||||
strlcpy(vcap->driver, data->v4l2_dev.name, sizeof(vcap->driver));
|
||||
strlcpy(vcap->card, data->vdev.name, sizeof(vcap->card));
|
||||
strscpy(vcap->driver, data->v4l2_dev.name, sizeof(vcap->driver));
|
||||
strscpy(vcap->card, data->vdev.name, sizeof(vcap->card));
|
||||
|
||||
sprintf(vcap->bus_info, "I2C:%d-%d", client->adapter->nr, client->addr);
|
||||
|
||||
@@ -378,7 +378,7 @@ static int video_i2c_enum_input(struct file *file, void *fh,
|
||||
if (vin->index > 0)
|
||||
return -EINVAL;
|
||||
|
||||
strlcpy(vin->name, "Camera", sizeof(vin->name));
|
||||
strscpy(vin->name, "Camera", sizeof(vin->name));
|
||||
|
||||
vin->type = V4L2_INPUT_TYPE_CAMERA;
|
||||
|
||||
@@ -534,7 +534,7 @@ static int video_i2c_probe(struct i2c_client *client,
|
||||
|
||||
data->client = client;
|
||||
v4l2_dev = &data->v4l2_dev;
|
||||
strlcpy(v4l2_dev->name, VIDEO_I2C_DRIVER, sizeof(v4l2_dev->name));
|
||||
strscpy(v4l2_dev->name, VIDEO_I2C_DRIVER, sizeof(v4l2_dev->name));
|
||||
|
||||
ret = v4l2_device_register(&client->dev, v4l2_dev);
|
||||
if (ret < 0)
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele