[PATCH] platform/x86: think-lmi: Use snprintf() in new_password_store()

Thorsten Blum posted 1 patch 5 days, 13 hours ago
drivers/platform/x86/lenovo/think-lmi.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
[PATCH] platform/x86: think-lmi: Use snprintf() in new_password_store()
Posted by Thorsten Blum 5 days, 13 hours ago
While the current code works correctly, replace unbounded sprintf()
calls with the safer snprintf() in new_password_store() to follow secure
coding best practices.

Signed-off-by: Thorsten Blum <blum@kernel.org>
---
 drivers/platform/x86/lenovo/think-lmi.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/platform/x86/lenovo/think-lmi.c b/drivers/platform/x86/lenovo/think-lmi.c
index a0e3fa766e37..3ddc1f5cec19 100644
--- a/drivers/platform/x86/lenovo/think-lmi.c
+++ b/drivers/platform/x86/lenovo/think-lmi.c
@@ -487,16 +487,16 @@ static ssize_t new_password_store(struct kobject *kobj,
 		/* Special handling required for HDD and NVMe passwords */
 		if (setting == tlmi_priv.pwd_hdd) {
 			if (setting->level == TLMI_LEVEL_USER)
-				sprintf(pwd_type, "uhdp%d", setting->index);
+				snprintf(pwd_type, sizeof(pwd_type), "uhdp%d", setting->index);
 			else
-				sprintf(pwd_type, "mhdp%d", setting->index);
+				snprintf(pwd_type, sizeof(pwd_type), "mhdp%d", setting->index);
 		} else if (setting == tlmi_priv.pwd_nvme) {
 			if (setting->level == TLMI_LEVEL_USER)
-				sprintf(pwd_type, "udrp%d", setting->index);
+				snprintf(pwd_type, sizeof(pwd_type), "udrp%d", setting->index);
 			else
-				sprintf(pwd_type, "adrp%d", setting->index);
+				snprintf(pwd_type, sizeof(pwd_type), "adrp%d", setting->index);
 		} else {
-			sprintf(pwd_type, "%s", setting->pwd_type);
+			snprintf(pwd_type, sizeof(pwd_type), "%s", setting->pwd_type);
 		}
 
 		ret = tlmi_opcode_setting("WmiOpcodePasswordType", pwd_type);
Re: [PATCH] platform/x86: think-lmi: Use snprintf() in new_password_store()
Posted by Mark Pearson 3 days, 6 hours ago
On Sun, Sep 20, 2026, at 6:30 AM, Thorsten Blum wrote:
> While the current code works correctly, replace unbounded sprintf()
> calls with the safer snprintf() in new_password_store() to follow secure
> coding best practices.
>
> Signed-off-by: Thorsten Blum <blum@kernel.org>
> ---
>  drivers/platform/x86/lenovo/think-lmi.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/platform/x86/lenovo/think-lmi.c 
> b/drivers/platform/x86/lenovo/think-lmi.c
> index a0e3fa766e37..3ddc1f5cec19 100644
> --- a/drivers/platform/x86/lenovo/think-lmi.c
> +++ b/drivers/platform/x86/lenovo/think-lmi.c
> @@ -487,16 +487,16 @@ static ssize_t new_password_store(struct kobject 
> *kobj,
>  		/* Special handling required for HDD and NVMe passwords */
>  		if (setting == tlmi_priv.pwd_hdd) {
>  			if (setting->level == TLMI_LEVEL_USER)
> -				sprintf(pwd_type, "uhdp%d", setting->index);
> +				snprintf(pwd_type, sizeof(pwd_type), "uhdp%d", setting->index);
>  			else
> -				sprintf(pwd_type, "mhdp%d", setting->index);
> +				snprintf(pwd_type, sizeof(pwd_type), "mhdp%d", setting->index);
>  		} else if (setting == tlmi_priv.pwd_nvme) {
>  			if (setting->level == TLMI_LEVEL_USER)
> -				sprintf(pwd_type, "udrp%d", setting->index);
> +				snprintf(pwd_type, sizeof(pwd_type), "udrp%d", setting->index);
>  			else
> -				sprintf(pwd_type, "adrp%d", setting->index);
> +				snprintf(pwd_type, sizeof(pwd_type), "adrp%d", setting->index);
>  		} else {
> -			sprintf(pwd_type, "%s", setting->pwd_type);
> +			snprintf(pwd_type, sizeof(pwd_type), "%s", setting->pwd_type);
>  		}
> 
>  		ret = tlmi_opcode_setting("WmiOpcodePasswordType", pwd_type);

Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Mark