sockets: avoid crash when cleaning up sockets for an invalid FD
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 27 Oct 2017 07:51:59 +0000 (08:51 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 28 Nov 2017 10:48:04 +0000 (10:48 +0000)
If socket_listen_cleanup is passed an invalid FD, then querying the socket
local address will fail. We must thus be prepared for the returned addr to
be NULL

Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
util/qemu-sockets.c

index 8b75541ce41fbc5cde410f081be9b98db0ce1856..a1cf47e625f1b134b07a0d2de937ee2a8ca170ec 100644 (file)
@@ -1079,6 +1079,9 @@ void socket_listen_cleanup(int fd, Error **errp)
     SocketAddress *addr;
 
     addr = socket_local_address(fd, errp);
+    if (!addr) {
+        return;
+    }
 
     if (addr->type == SOCKET_ADDRESS_TYPE_UNIX
         && addr->u.q_unix.path) {