Subject: Re: [iproute PATCH 51/51] lib/bpf: Check return value of write()

From: Daniel Borkmann <[email-masked]>
Date: Mon, 14 Aug 2017 11:17:39 +0200

On 08/12/2017 02:05 PM, Phil Sutter wrote:
> This is merely to silence the compiler warning. If write to stderr
> failed, assume that printing an error message will fail as well so don't
> even try.
>
> Signed-off-by: Phil Sutter <[email-masked]>
> ---
>   lib/bpf.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/lib/bpf.c b/lib/bpf.c
> index 1dcb261dc915f..825e071cea572 100644
> --- a/lib/bpf.c
> +++ b/lib/bpf.c
> @@ -591,7 +591,8 @@ int bpf_trace_pipe(void)
>
>   		ret = read(fd, buff, sizeof(buff) - 1);
>   		if (ret > 0) {
> -			write(2, buff, ret);
> +			if (write(STDERR_FILENO, buff, ret) != ret)
> +				return -1;

Quite unlikely to fail, but we should probably bark loudly
here instead of just returning -1. Perhaps assert() would
suit better.

>   			fflush(stderr);
>   		}
>   	}