[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190223190709.61558-1-edumazet@google.com>
Date: Sat, 23 Feb 2019 11:07:09 -0800
From: Eric Dumazet <edumazet@...gle.com>
To: Alexei Starovoitov <ast@...nel.org>
Cc: Daniel Borkmann <daniel@...earbox.net>,
netdev <netdev@...r.kernel.org>,
Eric Dumazet <edumazet@...gle.com>,
Eric Dumazet <eric.dumazet@...il.com>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
bpf <bpf@...r.kernel.org>, Lawrence Brakmo <brakmo@...com>
Subject: [PATCH bpf] bpf: properly check TCP_CONGESTION optlen
If caller of bpf_setsockopt() is silly passing a negative optlen
bad things happen.
Fixes: 91b5b21c7c16 ("bpf: Add support for changing congestion control")
Signed-off-by: Eric Dumazet <edumazet@...gle.com>
Cc: Lawrence Brakmo <brakmo@...com>
---
net/core/filter.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/net/core/filter.c b/net/core/filter.c
index f7d0004fc16096eb42ece3a6acf645540ee2326b..6a5d89464168f2f35f43986c1dbc0446c9390a3c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -4194,8 +4194,9 @@ BPF_CALL_5(bpf_setsockopt, struct bpf_sock_ops_kern *, bpf_sock,
char name[TCP_CA_NAME_MAX];
bool reinit = bpf_sock->op > BPF_SOCK_OPS_NEEDS_ECN;
- strncpy(name, optval, min_t(long, optlen,
- TCP_CA_NAME_MAX-1));
+ if (optlen < 0)
+ return -EINVAL;
+ strncpy(name, optval, min(optlen, TCP_CA_NAME_MAX - 1));
name[TCP_CA_NAME_MAX-1] = 0;
ret = tcp_set_congestion_control(sk, name, false,
reinit);
--
2.21.0.rc0.258.g878e2cd30e-goog
Powered by blists - more mailing lists