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

Reply via email to