Index: /trunk/src/VBox/Devices/Storage/VSCSI/VSCSISgBuf.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/VSCSI/VSCSISgBuf.cpp	(revision 35061)
+++ /trunk/src/VBox/Devices/Storage/VSCSI/VSCSISgBuf.cpp	(revision 35062)
@@ -49,26 +49,30 @@
     uint8_t *pbBuf = pIoMemCtx->pbBuf;
 
-    pIoMemCtx->cbBufLeft -= cbData;
+    if (   pbBuf
+        && cbData)
+    {
+        pIoMemCtx->cbBufLeft -= cbData;
 
-    /* Advance to the next segment if required. */
-    if (!pIoMemCtx->cbBufLeft)
-    {
-        pIoMemCtx->iSegIdx++;
+        /* Advance to the next segment if required. */
+        if (!pIoMemCtx->cbBufLeft)
+        {
+            pIoMemCtx->iSegIdx++;
 
-        if (RT_UNLIKELY(pIoMemCtx->iSegIdx == pIoMemCtx->cSegments))
-        {
-            pIoMemCtx->cbBufLeft = 0;
-            pIoMemCtx->pbBuf     = NULL;
+            if (RT_UNLIKELY(pIoMemCtx->iSegIdx == pIoMemCtx->cSegments))
+            {
+                pIoMemCtx->cbBufLeft = 0;
+                pIoMemCtx->pbBuf     = NULL;
+            }
+            else
+            {
+                pIoMemCtx->pbBuf     = (uint8_t *)pIoMemCtx->paDataSeg[pIoMemCtx->iSegIdx].pvSeg;
+                pIoMemCtx->cbBufLeft = pIoMemCtx->paDataSeg[pIoMemCtx->iSegIdx].cbSeg;
+            }
         }
         else
-        {
-            pIoMemCtx->pbBuf     = (uint8_t *)pIoMemCtx->paDataSeg[pIoMemCtx->iSegIdx].pvSeg;
-            pIoMemCtx->cbBufLeft = pIoMemCtx->paDataSeg[pIoMemCtx->iSegIdx].cbSeg;
-        }
+            pIoMemCtx->pbBuf += cbData;
+    }
 
-        *pcbData = cbData;
-    }
-    else
-        pIoMemCtx->pbBuf += cbData;
+    *pcbData = cbData;
 
     return pbBuf;
