Index: /trunk/src/VBox/Storage/VD.cpp
===================================================================
--- /trunk/src/VBox/Storage/VD.cpp	(revision 88527)
+++ /trunk/src/VBox/Storage/VD.cpp	(revision 88528)
@@ -8324,4 +8324,10 @@
         fLockRead = true;
 
+        AssertMsgBreakStmt(   uOffset < pDisk->cbSize
+                           && cbRead <= pDisk->cbSize - uOffset,
+                           ("uOffset=%llu cbRead=%zu pDisk->cbSize=%llu\n",
+                            uOffset, cbRead, pDisk->cbSize),
+                           rc = VERR_INVALID_PARAMETER);
+
         PVDIMAGE pImage = pDisk->pLast;
         AssertPtrBreakStmt(pImage, rc = VERR_VD_NOT_OPENED);
@@ -8383,5 +8389,6 @@
         fLockWrite = true;
 
-        AssertMsgBreakStmt(uOffset + cbWrite <= pDisk->cbSize,
+        AssertMsgBreakStmt(   uOffset < pDisk->cbSize
+                           && cbWrite <= pDisk->cbSize - uOffset,
                            ("uOffset=%llu cbWrite=%zu pDisk->cbSize=%llu\n",
                             uOffset, cbWrite, pDisk->cbSize),
@@ -9738,5 +9745,6 @@
         fLockRead = true;
 
-        AssertMsgBreakStmt(uOffset + cbRead <= pDisk->cbSize,
+        AssertMsgBreakStmt(   uOffset < pDisk->cbSize
+                           && cbRead <= pDisk->cbSize - uOffset,
                            ("uOffset=%llu cbRead=%zu pDisk->cbSize=%llu\n",
                             uOffset, cbRead, pDisk->cbSize),
@@ -9809,5 +9817,6 @@
         fLockWrite = true;
 
-        AssertMsgBreakStmt(uOffset + cbWrite <= pDisk->cbSize,
+        AssertMsgBreakStmt(   uOffset < pDisk->cbSize
+                           && cbWrite <= pDisk->cbSize - uOffset,
                            ("uOffset=%llu cbWrite=%zu pDisk->cbSize=%llu\n",
                             uOffset, cbWrite, pDisk->cbSize),
