Index: /trunk/src/VBox/Devices/Misc/VirtualKD.cpp
===================================================================
--- /trunk/src/VBox/Devices/Misc/VirtualKD.cpp	(revision 67972)
+++ /trunk/src/VBox/Devices/Misc/VirtualKD.cpp	(revision 67973)
@@ -74,5 +74,5 @@
     RTLDRMOD hLib;
     IKDClient *pKDClient;
-    char abCmdBody[262144];
+    char abCmdBody[_256K];
 } VIRTUALKD;
 
@@ -108,7 +108,10 @@
         VKDREQUESTHDR RequestHeader = {0, };
         int rc = PDMDevHlpPhysRead(pDevIns, (RTGCPHYS)u32, &RequestHeader, sizeof(RequestHeader));
-        if (!RT_SUCCESS(rc) || !RequestHeader.cbData)
+        if (   !RT_SUCCESS(rc)
+            || !RequestHeader.cbData)
             return VINF_SUCCESS;
-        rc = PDMDevHlpPhysRead(pDevIns, (RTGCPHYS)(u32 + sizeof(RequestHeader)), pThis->abCmdBody, RequestHeader.cbData);
+
+        size_t cbData = RT_MIN(RequestHeader.cbData, sizeof(pThis->abCmdBody));
+        rc = PDMDevHlpPhysRead(pDevIns, (RTGCPHYS)(u32 + sizeof(RequestHeader)), pThis->abCmdBody, cbData);
         if (!RT_SUCCESS(rc))
             return VINF_SUCCESS;
@@ -116,7 +119,5 @@
         char *pReply = NULL;
         unsigned cbReply;
-        cbReply = pThis->pKDClient->OnRequest(pThis->abCmdBody,
-                                              RequestHeader.cbData,
-                                              &pReply);
+        cbReply = pThis->pKDClient->OnRequest(pThis->abCmdBody, cbData, &pReply);
 
         if (!pReply)
