浏览代码

sockets: avoid crash when cleaning up sockets for an invalid FD

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>
Daniel P. Berrange 7 年之前
父节点
当前提交
2d7ad7c05e
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. 3 0
      util/qemu-sockets.c

+ 3 - 0
util/qemu-sockets.c

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