Thread (22 messages) 22 messages, 5 authors, 2021-11-10

Re: [PATCH] tty: vt: keyboard: do not copy an extra-byte in copy_to_user

From: Pavel Skripkin <hidden>
Date: 2021-11-06 20:48:36
Also in: lkml

On 11/6/21 23:44, Ajay Garg wrote:
quoted
quoted
That's the whole point of the discussion :)

The method "vt_do_kdgkb_ioctl" does not manage "func_table[kb_func]".
Thus, the method does not know whether or not
strlen(func_table[kb_func]) < sizeof(user_kdgkb->kb_string).
It manages. The code under `case KDSKBSENT:` sets func_table[] entries
via vt_kdskbsent().

kbs = strndup_user(..., sizeof(user_kdgkb->kb_string));

is used to allocate buffer for the func_table[] entry. That's my main
point :)
func_table is set in vt_kdskbent, which itself is external.

More importantly, vt_kdskbent is handled in case KDSKBSENT:, while the
strlcpy issue we are dealing with is in case KDGKBSENT:
In case KDGKBSENT, following are managed :

                 ssize_t len = sizeof(user_kdgkb->kb_string);
                 kbs = kmalloc(len, GFP_KERNEL);

while func_table[kb_func] is external entity here, so no assumption
ought to be made for it, just my 2 cents though :)

Anyhow, really, it is the maintainers' choice now :), since there
isn't a burning (compilation/runtime) issue.
I fully agree here, it's maintainer's choice. Let's sit down and wait 
what experienced people thing about this :)

I've just wanted to explain my idea better to exclude possible 
misunderstanding.

Thanks



With regards,
Pavel Skripkin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help