Index: /trunk/src/VBox/Main/src-client/UsbCardReader.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/UsbCardReader.cpp	(revision 42432)
+++ /trunk/src/VBox/Main/src-client/UsbCardReader.cpp	(revision 42433)
@@ -774,5 +774,5 @@
         case VRDE_SCARD_FN_ESTABLISHCONTEXT:
         {
-            Assert(cbData == sizeof(VRDESCARDESTABLISHCONTEXTRSP));
+            Assert(cbData == sizeof(VRDESCARDESTABLISHCONTEXTRSP) || RT_FAILURE(rcRequest));
             VRDESCARDESTABLISHCONTEXTRSP *pRsp = (VRDESCARDESTABLISHCONTEXTRSP *)pvData;
             UCRREMOTE *pRemote = (UCRREMOTE *)pvUser;
@@ -798,5 +798,5 @@
         case VRDE_SCARD_FN_LISTREADERS:
         {
-            Assert(cbData == sizeof(VRDESCARDLISTREADERSRSP));
+            Assert(cbData == sizeof(VRDESCARDLISTREADERSRSP) || RT_FAILURE(rcRequest));
             VRDESCARDLISTREADERSRSP *pRsp = (VRDESCARDLISTREADERSRSP *)pvData;
             UCRREMOTE *pRemote = (UCRREMOTE *)pvUser;
@@ -831,5 +831,5 @@
         case VRDE_SCARD_FN_RELEASECONTEXT:
         {
-            Assert(cbData == sizeof(VRDESCARDRELEASECONTEXTRSP));
+            Assert(cbData == sizeof(VRDESCARDRELEASECONTEXTRSP) || RT_FAILURE(rcRequest));
             VRDESCARDRELEASECONTEXTRSP *pRsp = (VRDESCARDRELEASECONTEXTRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -845,5 +845,5 @@
         case VRDE_SCARD_FN_GETSTATUSCHANGE:
         {
-            Assert(cbData == sizeof(VRDESCARDGETSTATUSCHANGERSP));
+            Assert(cbData == sizeof(VRDESCARDGETSTATUSCHANGERSP) || RT_FAILURE(rcRequest));
             VRDESCARDGETSTATUSCHANGERSP *pRsp = (VRDESCARDGETSTATUSCHANGERSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -854,5 +854,5 @@
 
             uint32_t rcCard;
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -903,5 +903,5 @@
         case VRDE_SCARD_FN_CANCEL:
         {
-            Assert(cbData == sizeof(VRDESCARDCANCELRSP));
+            Assert(cbData == sizeof(VRDESCARDCANCELRSP) || RT_FAILURE(rcRequest));
             VRDESCARDCANCELRSP *pRsp = (VRDESCARDCANCELRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -914,5 +914,5 @@
         case VRDE_SCARD_FN_CONNECT:
         {
-            Assert(cbData == sizeof(VRDESCARDCONNECTRSP));
+            Assert(cbData == sizeof(VRDESCARDCONNECTRSP) || RT_FAILURE(rcRequest));
             VRDESCARDCONNECTRSP *pRsp = (VRDESCARDCONNECTRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -925,5 +925,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -953,5 +953,5 @@
         case VRDE_SCARD_FN_RECONNECT:
         {
-            Assert(cbData == sizeof(VRDESCARDRECONNECTRSP));
+            Assert(cbData == sizeof(VRDESCARDRECONNECTRSP) || RT_FAILURE(rcRequest));
             VRDESCARDRECONNECTRSP *pRsp = (VRDESCARDRECONNECTRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -964,5 +964,5 @@
         case VRDE_SCARD_FN_DISCONNECT:
         {
-            Assert(cbData == sizeof(VRDESCARDDISCONNECTRSP));
+            Assert(cbData == sizeof(VRDESCARDDISCONNECTRSP) || RT_FAILURE(rcRequest));
             VRDESCARDDISCONNECTRSP *pRsp = (VRDESCARDDISCONNECTRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -976,5 +976,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -994,5 +994,5 @@
         case VRDE_SCARD_FN_BEGINTRANSACTION:
         {
-            Assert(cbData == sizeof(VRDESCARDBEGINTRANSACTIONRSP));
+            Assert(cbData == sizeof(VRDESCARDBEGINTRANSACTIONRSP) || RT_FAILURE(rcRequest));
             VRDESCARDBEGINTRANSACTIONRSP *pRsp = (VRDESCARDBEGINTRANSACTIONRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1005,5 +1005,5 @@
         case VRDE_SCARD_FN_ENDTRANSACTION:
         {
-            Assert(cbData == sizeof(VRDESCARDENDTRANSACTIONRSP));
+            Assert(cbData == sizeof(VRDESCARDENDTRANSACTIONRSP) || RT_FAILURE(rcRequest));
             VRDESCARDENDTRANSACTIONRSP *pRsp = (VRDESCARDENDTRANSACTIONRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1016,5 +1016,5 @@
         case VRDE_SCARD_FN_STATE:
         {
-            Assert(cbData == sizeof(VRDESCARDSTATERSP));
+            Assert(cbData == sizeof(VRDESCARDSTATERSP) || RT_FAILURE(rcRequest));
             VRDESCARDSTATERSP *pRsp = (VRDESCARDSTATERSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1027,5 +1027,5 @@
         case VRDE_SCARD_FN_STATUS:
         {
-            Assert(cbData == sizeof(VRDESCARDSTATUSRSP));
+            Assert(cbData == sizeof(VRDESCARDSTATUSRSP) || RT_FAILURE(rcRequest));
             VRDESCARDSTATUSRSP *pRsp = (VRDESCARDSTATUSRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1044,5 +1044,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -1078,5 +1078,5 @@
         case VRDE_SCARD_FN_TRANSMIT:
         {
-            Assert(cbData == sizeof(VRDESCARDTRANSMITRSP));
+            Assert(cbData == sizeof(VRDESCARDTRANSMITRSP) || RT_FAILURE(rcRequest));
             VRDESCARDTRANSMITRSP *pRsp = (VRDESCARDTRANSMITRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1092,5 +1092,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -1122,5 +1122,5 @@
         case VRDE_SCARD_FN_CONTROL:
         {
-            Assert(cbData == sizeof(VRDESCARDCONTROLRSP));
+            Assert(cbData == sizeof(VRDESCARDCONTROLRSP) || RT_FAILURE(rcRequest));
             VRDESCARDCONTROLRSP *pRsp = (VRDESCARDCONTROLRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1135,5 +1135,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -1162,5 +1162,5 @@
         case VRDE_SCARD_FN_GETATTRIB:
         {
-            Assert(cbData == sizeof(VRDESCARDGETATTRIBRSP));
+            Assert(cbData == sizeof(VRDESCARDGETATTRIBRSP) || RT_FAILURE(rcRequest));
             VRDESCARDGETATTRIBRSP *pRsp = (VRDESCARDGETATTRIBRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1175,5 +1175,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
@@ -1202,5 +1202,5 @@
         case VRDE_SCARD_FN_SETATTRIB:
         {
-            Assert(cbData == sizeof(VRDESCARDSETATTRIBRSP));
+            Assert(cbData == sizeof(VRDESCARDSETATTRIBRSP) || RT_FAILURE(rcRequest));
             VRDESCARDSETATTRIBRSP *pRsp = (VRDESCARDSETATTRIBRSP *)pvData;
             UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
@@ -1212,5 +1212,5 @@
             uint32_t rcCard;
 
-            if (RT_FAILURE(rc))
+            if (RT_FAILURE(rcRequest))
             {
                 rcCard = VRDE_SCARD_E_NO_SMARTCARD;
