Blame SOURCES/LibVNCServer-0.9.10-CVE-2014-6054.patch

e0f39d
commit 05a9bd41a8ec0a9d580a8f420f41718bdd235446
e0f39d
Author: Nicolas Ruff <nruff@google.com>
e0f39d
Date:   Mon Aug 18 15:22:48 2014 +0200
e0f39d
e0f39d
    Do not accept a scaling factor of zero on PalmVNCSetScaleFactor and SetScale client->server messages. This would cause a division by zero and crash the server.
e0f39d
e0f39d
diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c
e0f39d
index 7e43fe3..df7d74c 100644
e0f39d
--- a/libvncserver/rfbserver.c
e0f39d
+++ b/libvncserver/rfbserver.c
e0f39d
@@ -2491,6 +2491,13 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
e0f39d
           rfbCloseClient(cl);
e0f39d
           return;
e0f39d
       }
e0f39d
+
e0f39d
+      if (msg.ssc.scale == 0) {
e0f39d
+          rfbLogPerror("rfbProcessClientNormalMessage: will not accept a scale factor of zero");
e0f39d
+          rfbCloseClient(cl);
e0f39d
+          return;
e0f39d
+      }
e0f39d
+
e0f39d
       rfbStatRecordMessageRcvd(cl, msg.type, sz_rfbSetScaleMsg, sz_rfbSetScaleMsg);
e0f39d
       rfbLog("rfbSetScale(%d)\n", msg.ssc.scale);
e0f39d
       rfbScalingSetup(cl,cl->screen->width/msg.ssc.scale, cl->screen->height/msg.ssc.scale);
e0f39d
@@ -2507,6 +2514,13 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
e0f39d
           rfbCloseClient(cl);
e0f39d
           return;
e0f39d
       }
e0f39d
+
e0f39d
+      if (msg.ssc.scale == 0) {
e0f39d
+          rfbLogPerror("rfbProcessClientNormalMessage: will not accept a scale factor of zero");
e0f39d
+          rfbCloseClient(cl);
e0f39d
+          return;
e0f39d
+      }
e0f39d
+
e0f39d
       rfbStatRecordMessageRcvd(cl, msg.type, sz_rfbSetScaleMsg, sz_rfbSetScaleMsg);
e0f39d
       rfbLog("rfbSetScale(%d)\n", msg.ssc.scale);
e0f39d
       rfbScalingSetup(cl,cl->screen->width/msg.ssc.scale, cl->screen->height/msg.ssc.scale);