[bug report] platform/x86: think-lmi: Add WMI interface support on Lenovo platforms

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

 



Hello Mark Pearson,

The patch a7314b3b1d8a: "platform/x86: think-lmi: Add WMI interface
support on Lenovo platforms" from May 30, 2021, leads to the
following static checker warning:

	drivers/platform/x86/think-lmi.c:453 kbdlang_store()
	error: iterator underflow 'setting->kbdlang' (-1),1-3

drivers/platform/x86/think-lmi.c
   438  static ssize_t kbdlang_store(struct kobject *kobj,
   439                                    struct kobj_attribute *attr,
   440                                    const char *buf, size_t count)
   441  {
   442          struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj);
   443          int length;
   444  
   445          length = strlen(buf);

"count" can never be zero, but strlen(buf) can be zero.

   446          if (buf[length-1] == '\n')
                        ^^^^^^^^
So this code can read before the start of the buffer, potentially
leading to an Oops.

   447                  length--;
   448  
   449          if (!length || (length >= TLMI_LANG_MAXLEN))
   450                  return -EINVAL;
   451  
   452          memcpy(setting->kbdlang, buf, length);
   453          setting->kbdlang[length] = '\0';
   454          return count;
   455  }

regards,
dan carpenter



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux