Re: [PATCH] replace incorrect strscpy use in FORTIFY_SOURCE

From: Kees Cook
Date: Fri Jul 14 2017 - 19:51:41 EST


On Fri, Jul 14, 2017 at 2:28 PM, Daniel Micay <danielmicay@xxxxxxxxx> wrote:
> Using strscpy was wrong because FORTIFY_SOURCE is passing the maximum
> possible size of the outermost object, but strscpy defines the count
> parameter as the exact buffer size, so this could copy past the end of
> the source. This would still be wrong with the planned usage of
> __builtin_object_size(p, 1) for intra-object overflow checks since it's
> the maximum possible size of the specified object with no guarantee of
> it being that large.
>
> Reuse of the fortified functions like this currently makes the runtime
> error reporting less precise but that can be improved later on.
>
> Signed-off-by: Daniel Micay <danielmicay@xxxxxxxxx>

Thanks for fixing this! Linus, do you want to take this directly or
have it go via -mm where fortify landed originally?

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

As far as testing goes, was the NFS tree not in -next, or was a test
not running against -next? I'm curious why it took until the NFS tree
landed in Linus's tree for this to get noticed. Fortify was in -next
for a while...

-Kees

--
Kees Cook
Pixel Security