On Mon, Feb 25, 2019 at 6:06 AM Masami Hiramatsu <mhira...@kernel.org> wrote: > +static __always_inline long strncpy_from_unsafe_common(char *dst, > + const char __user *unsafe_addr, long count) > +{ > + const char __user *src = unsafe_addr; > + int ret; > + > + pagefault_disable(); > + do { > + ret = __get_user(*dst++, src++); > + } while (dst[-1] && ret == 0 && src - unsafe_addr < count); > + dst[-1] = '\0'; > + pagefault_enable(); > + > + return ret ? -EFAULT : src - unsafe_addr; > +}
I'm all for always NUL-truncating, but this isn't "strncpy" (which has the buggy maybe-I-didn't-NUL-terminate behavior). Can we call this strscpy_...() instead? -- Kees Cook