qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PULL 3/3] slirp: tcp_listen(): Don't try to close() an fd


From: Samuel Thibault
Subject: [Qemu-devel] [PULL 3/3] slirp: tcp_listen(): Don't try to close() an fd we never opened
Date: Sun, 26 Feb 2017 15:43:53 +0100

From: Peter Maydell <address@hidden>

Coverity points out (CID 1005725) that an error-exit path in tcp_listen()
will try to close(s) even if the reason it got there was that the
qemu_socket() failed and s was never opened.  Not only that, this isn't even
the right function to use, because we need closesocket() to do the right
thing on Windows.  Change to using the right function and only calling it if
needed.

Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Samuel Thibault <address@hidden>
---
 slirp/socket.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/slirp/socket.c b/slirp/socket.c
index 6c18971368..86927722e1 100644
--- a/slirp/socket.c
+++ b/slirp/socket.c
@@ -713,7 +713,9 @@ tcp_listen(Slirp *slirp, uint32_t haddr, u_int hport, 
uint32_t laddr,
            (listen(s,1) < 0)) {
                int tmperrno = errno; /* Don't clobber the real reason we 
failed */
 
-               close(s);
+                if (s >= 0) {
+                    closesocket(s);
+                }
                sofree(so);
                /* Restore the real errno */
 #ifdef _WIN32
-- 
2.11.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]