From 995f443ef74ae9e25b7be31c5a390df35159ef10 Mon Sep 17 00:00:00 2001 From: Mark Mielke Date: Mon, 20 Feb 2023 00:38:52 -0500 Subject: [PATCH] VNCSConnectionST clipboard functions should check state before access. Clipboard functions may run on connections that are not yet at RFBSTATE_NORMAL. Due to recent hardening of the accessCheck() function, it is important to validate that the state is RFBSTATE_NORMAL before calling accessCheck(). Fixes #1599. --- common/rfb/VNCSConnectionST.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx index 9f58e786..23024c5e 100644 --- a/common/rfb/VNCSConnectionST.cxx +++ b/common/rfb/VNCSConnectionST.cxx @@ -313,9 +313,9 @@ void VNCSConnectionST::setLEDStateOrClose(unsigned int state) void VNCSConnectionST::requestClipboardOrClose() { try { + if (state() != RFBSTATE_NORMAL) return; if (!accessCheck(AccessCutText)) return; if (!rfb::Server::acceptCutText) return; - if (state() != RFBSTATE_NORMAL) return; requestClipboard(); } catch(rdr::Exception& e) { close(e.str()); @@ -325,9 +325,9 @@ void VNCSConnectionST::requestClipboardOrClose() void VNCSConnectionST::announceClipboardOrClose(bool available) { try { + if (state() != RFBSTATE_NORMAL) return; if (!accessCheck(AccessCutText)) return; if (!rfb::Server::sendCutText) return; - if (state() != RFBSTATE_NORMAL) return; announceClipboard(available); } catch(rdr::Exception& e) { close(e.str()); @@ -337,9 +337,9 @@ void VNCSConnectionST::announceClipboardOrClose(bool available) void VNCSConnectionST::sendClipboardDataOrClose(const char* data) { try { + if (state() != RFBSTATE_NORMAL) return; if (!accessCheck(AccessCutText)) return; if (!rfb::Server::sendCutText) return; - if (state() != RFBSTATE_NORMAL) return; sendClipboardData(data); } catch(rdr::Exception& e) { close(e.str()); -- 2.39.5