From 7ef2a87b8c3906651e70ef5d6b678076e222ee87 Mon Sep 17 00:00:00 2001 From: Troy Lee Date: Thu, 26 Aug 2021 12:03:08 +0800 Subject: libvncserver: multithread support obmc-ikvm runs with two seprated thread to handle connection from user (bmcweb::kvm_websocket) and video device (libvncserver), however both these two thread access to rfb*() API. It leads to client socket double free issue. cl->sock has been set to RFB_INVALID_SOCKET(-1) with first clientClose call. And the second call to clientClose uses -1 in FD_CLR() generates buffer overflow. ``` obmc-ikvm[672]: 24/08/2021 08:45:11 rfbClientConnectionGone: c1=75900748 obmc-ikvm[672]: 24/08/2021 08:45:11 rfbClientConnectionGone: c1=75900748 obmc-ikvm[672]: 24/08/2021 08:45:11 rfbSendUpdateBuf: write: Broken pipe obmc-ikvm[672]: *** buffer overflow detected ***: terminated systemd[1]: start-ipkvm.service: Main process exited, code=dumped, status=6/ABRT systemd[1]: start-ipkvm.service: Failed with result 'core-dump'. systemd[1]: start-ipkvm.service: Scheduled restart job, restart counter is at 1. systemd[1]: Stopped OpenBMC ipKVM daemon. ``` Signed-off-by: Troy Lee Change-Id: I4bbe69c6d7006e44c5f4a532fb54f9ae9c9cd52b --- meta-phosphor/recipes-graphics/libvncserver/libvncserver_%.bbappend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-phosphor/recipes-graphics/libvncserver/libvncserver_%.bbappend b/meta-phosphor/recipes-graphics/libvncserver/libvncserver_%.bbappend index fa15047d7..76d915c24 100644 --- a/meta-phosphor/recipes-graphics/libvncserver/libvncserver_%.bbappend +++ b/meta-phosphor/recipes-graphics/libvncserver/libvncserver_%.bbappend @@ -1 +1 @@ -PACKAGECONFIG = "jpeg lzo systemd zlib openssl" +PACKAGECONFIG = "jpeg lzo systemd zlib openssl pthread" -- cgit v1.2.3