diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2022-04-05 12:51:00 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-04-07 11:44:35 +0200 |
commit | 2a3b8dad33d4921a210062101f92f5fe9e349ef0 (patch) | |
tree | 43f0774a7deba6c0146b7513084ee5b04d8ff2ef /tcp_splice.c | |
parent | 264d68edcf797709837c6919f58a2170c4effddf (diff) | |
download | passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.tar passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.tar.gz passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.tar.bz2 passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.tar.lz passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.tar.xz passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.tar.zst passt-2a3b8dad33d4921a210062101f92f5fe9e349ef0.zip |
tcp, tcp_splice: False "Negative array index read" positives, CWE-129
A flag or event bit is always set by callers. Reported by Coverity.
Signed-by-off: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp_splice.c')
-rw-r--r-- | tcp_splice.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/tcp_splice.c b/tcp_splice.c index 7c19d99..1e24986 100644 --- a/tcp_splice.c +++ b/tcp_splice.c @@ -170,15 +170,19 @@ static void conn_flag_do(const struct ctx *c, struct tcp_splice_conn *conn, return; conn->flags &= flag; - debug("TCP (spliced): index %li: %s dropped", conn - tc, - tcp_splice_flag_str[fls(~flag)]); + if (fls(~flag) >= 0) { + debug("TCP (spliced): index %li: %s dropped", conn - tc, + tcp_splice_flag_str[fls(~flag)]); + } } else { if (conn->flags & flag) return; conn->flags |= flag; - debug("TCP (spliced): index %li: %s", conn - tc, - tcp_splice_flag_str[fls(flag)]); + if (fls(flag) >= 0) { + debug("TCP (spliced): index %li: %s", conn - tc, + tcp_splice_flag_str[fls(flag)]); + } } if (flag == CLOSING) @@ -250,15 +254,19 @@ static void conn_event_do(const struct ctx *c, struct tcp_splice_conn *conn, return; conn->events &= event; - debug("TCP (spliced): index %li, ~%s", conn - tc, - tcp_splice_event_str[fls(~event)]); + if (fls(~event) >= 0) { + debug("TCP (spliced): index %li, ~%s", conn - tc, + tcp_splice_event_str[fls(~event)]); + } } else { if (conn->events & event) return; conn->events |= event; - debug("TCP (spliced): index %li, %s", conn - tc, - tcp_splice_event_str[fls(event)]); + if (fls(event) >= 0) { + debug("TCP (spliced): index %li, %s", conn - tc, + tcp_splice_event_str[fls(event)]); + } } if (tcp_splice_epoll_ctl(c, conn)) |