tcp: Avoid (theoretical) resource leak (CWE-772) Coverity warning
If tcp_timer_ctl() gets a socket number greater than SOCKET_MAX (2 ^ 24), we return error but we don't close the socket. This is a rather formal issue given that, at least on Linux, socket numbers are monotonic and we're in general not allowed to open so many sockets. Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
a1d5537741
commit
4f523c3276
1 changed files with 3 additions and 0 deletions
3
tcp.c
3
tcp.c
|
@ -702,6 +702,9 @@ static void tcp_timer_ctl(const struct ctx *c, struct tcp_tap_conn *conn)
|
||||||
fd = timerfd_create(CLOCK_MONOTONIC, 0);
|
fd = timerfd_create(CLOCK_MONOTONIC, 0);
|
||||||
if (fd == -1 || fd > SOCKET_MAX) {
|
if (fd == -1 || fd > SOCKET_MAX) {
|
||||||
debug("TCP: failed to get timer: %s", strerror(errno));
|
debug("TCP: failed to get timer: %s", strerror(errno));
|
||||||
|
if (fd > -1)
|
||||||
|
close(fd);
|
||||||
|
conn->timer = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
conn->timer = fd;
|
conn->timer = fd;
|
||||||
|
|
Loading…
Reference in a new issue