Message ID | 20250212224352.86583-3-thorsten.blum@linux.dev (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | scsi: hpsa: Replace deprecated strncpy() with strscpy_pad() | expand |
On Wed, 12 Feb 2025 23:43:53 +0100 Thorsten Blum <thorsten.blum@linux.dev> wrote: > strncpy() is deprecated for NUL-terminated destination buffers [1]. > > Replace memset() and strncpy() with strscpy_pad() to copy the version > string and fill the remaining bytes in the destination buffer with NUL > bytes. This avoids zeroing the memory before copying the string. > > Compile-tested only. > > Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] > Cc: linux-hardening@vger.kernel.org > Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> > --- > drivers/scsi/hpsa.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 84d8de07b7ae..1334886b68d0 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7238,8 +7238,7 @@ static int hpsa_controller_hard_reset(struct pci_dev *pdev, > > static void init_driver_version(char *driver_version, int len) > { > - memset(driver_version, 0, len); > - strncpy(driver_version, HPSA " " HPSA_DRIVER_VERSION, len - 1); > + strscpy_pad(driver_version, HPSA " " HPSA_DRIVER_VERSION, len - 1); Wrong. That will truncate maximum length strings. David > } > > static int write_driver_ver_to_cfgtable(struct CfgTable __iomem *cfgtable)
On 13. Feb 2025, at 20:14, David Laight wrote: > On Wed, 12 Feb 2025 23:43:53 +0100 > Thorsten Blum <thorsten.blum@linux.dev> wrote: > >> strncpy() is deprecated for NUL-terminated destination buffers [1]. >> >> Replace memset() and strncpy() with strscpy_pad() to copy the version >> string and fill the remaining bytes in the destination buffer with NUL >> bytes. This avoids zeroing the memory before copying the string. >> >> Compile-tested only. >> >> Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] >> Cc: linux-hardening@vger.kernel.org >> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> >> --- > > Wrong. > That will truncate maximum length strings. Yes, I sent a v2 to fix this already. https://lore.kernel.org/r/20250213114047.2366-2-thorsten.blum@linux.dev/ Thanks, Thorsten
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 84d8de07b7ae..1334886b68d0 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -7238,8 +7238,7 @@ static int hpsa_controller_hard_reset(struct pci_dev *pdev, static void init_driver_version(char *driver_version, int len) { - memset(driver_version, 0, len); - strncpy(driver_version, HPSA " " HPSA_DRIVER_VERSION, len - 1); + strscpy_pad(driver_version, HPSA " " HPSA_DRIVER_VERSION, len - 1); } static int write_driver_ver_to_cfgtable(struct CfgTable __iomem *cfgtable)
strncpy() is deprecated for NUL-terminated destination buffers [1]. Replace memset() and strncpy() with strscpy_pad() to copy the version string and fill the remaining bytes in the destination buffer with NUL bytes. This avoids zeroing the memory before copying the string. Compile-tested only. Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] Cc: linux-hardening@vger.kernel.org Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> --- drivers/scsi/hpsa.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)