Commit a68f3bd1 authored by Dan Carpenter's avatar Dan Carpenter Committed by Jiri Kosina

HID: hid-debug: clean up snprintf() checks in hid_resolv_usage()

The snprintf() limits are complicated and slightly wrong when it does:

	max(0, HID_DEBUG_BUFSIZE - len - 1)

The "- 1" should not be there.  It means we can't use the last
byte of the buffer.  If we change the first snprintf() to scnprintf()
then we can remove the max().

At the start of the function the strlen(buf) is going always going to
be < HID_DEBUG_BUFSIZE so that is safe.  If it were > HID_DEBUG_BUFSIZE
then that would result in a WARN().
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent f3e82521
......@@ -487,8 +487,7 @@ char *hid_resolv_usage(unsigned usage, struct seq_file *f) {
if (!f) {
len = strlen(buf);
snprintf(buf+len, max(0, HID_DEBUG_BUFSIZE - len), ".");
len++;
len += scnprintf(buf + len, HID_DEBUG_BUFSIZE - len, ".");
}
else {
seq_printf(f, ".");
......@@ -499,7 +498,7 @@ char *hid_resolv_usage(unsigned usage, struct seq_file *f) {
if (p->usage == (usage & 0xffff)) {
if (!f)
snprintf(buf + len,
max(0,HID_DEBUG_BUFSIZE - len - 1),
HID_DEBUG_BUFSIZE - len,
"%s", p->description);
else
seq_printf(f,
......@@ -510,8 +509,8 @@ char *hid_resolv_usage(unsigned usage, struct seq_file *f) {
break;
}
if (!f)
snprintf(buf + len, max(0, HID_DEBUG_BUFSIZE - len - 1),
"%04x", usage & 0xffff);
snprintf(buf + len, HID_DEBUG_BUFSIZE - len, "%04x",
usage & 0xffff);
else
seq_printf(f, "%04x", usage & 0xffff);
return buf;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment