Skip to content

Commit fa7726a

Browse files
JustinStittalexandrebelloni
authored andcommitted
i3c: replace deprecated strncpy
`strncpy` is deprecated for use on NUL-terminated destination strings [1]. We should prefer more robust and less ambiguous string interfaces. We expect adap->name to be NUL-terminated based on i2c_adapter name use: | dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); NUL-padding does not seem to be required as `master` is zero-allocated and `i3c_master_to_i2c_adapter` simply returns a field from within `master`: | master = devm_kzalloc(dev, sizeof(*master), GFP_KERNEL); ... | struct i2c_adapter *adap = i3c_master_to_i2c_adapter(master); ... | static struct i2c_adapter * | i3c_master_to_i2c_adapter(struct i3c_master_controller *master) | { | return &master->i2c; | } This means that `adap->name` should already be filled with NUL-bytes. Considering the above, a suitable replacement is `strscpy` [2] due to the fact that it guarantees NUL-termination on the destination buffer without unnecessarily NUL-padding. Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] Link: https://manpages.debian.org/testing/linux-manual-4.8/strscpy.9.en.html [2] Link: KSPP#90 Cc: linux-hardening@vger.kernel.org Signed-off-by: Justin Stitt <justinstitt@google.com> Reviewed-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20230921-strncpy-drivers-i3c-master-c-v1-1-9fdb8d8169e1@google.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
1 parent 4bd8405 commit fa7726a

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/i3c/master.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2309,7 +2309,7 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)
23092309
adap->dev.parent = master->dev.parent;
23102310
adap->owner = master->dev.parent->driver->owner;
23112311
adap->algo = &i3c_master_i2c_algo;
2312-
strncpy(adap->name, dev_name(master->dev.parent), sizeof(adap->name));
2312+
strscpy(adap->name, dev_name(master->dev.parent), sizeof(adap->name));
23132313

23142314
/* FIXME: Should we allow i3c masters to override these values? */
23152315
adap->timeout = 1000;

0 commit comments

Comments
 (0)