]> source.dussan.org Git - tigervnc.git/commitdiff
Fix handling of VMware cursors
authorPierre Ossman <ossman@cendio.se>
Tue, 18 Jan 2022 12:38:41 +0000 (13:38 +0100)
committerPierre Ossman <ossman@cendio.se>
Tue, 18 Jan 2022 12:38:41 +0000 (13:38 +0100)
This is a regression from ad0f061. If a VMware cursor rect was split up
over multiple read()s then the stream would become corrupted as we set
the restore point at the wrong place.

common/rfb/CMsgReader.cxx

index 88a31eca65027003018203736b2c002865f4f8fc..a30a7759cea581a4d55a2855ff226b75046c0e7c 100644 (file)
@@ -636,11 +636,11 @@ bool CMsgReader::readSetVMwareCursor(int width, int height, const Point& hotspot
   if (!is->hasData(1 + 1))
     return false;
 
+  is->setRestorePoint();
+
   type = is->readU8();
   is->skip(1);
 
-  is->setRestorePoint();
-
   if (type == 0) {
     int len = width * height * (handler->server.pf().bpp/8);
     rdr::U8Array andMask(len);