Rob Shearman : rpcrt4: Handle [out] -only non-conformant strings in stubless servers.

Alexandre Julliard julliard at winehq.org
Mon Dec 14 09:51:13 CST 2009


Module: wine
Branch: master
Commit: d412bcc3aef1ccec410b82fac74e4e55897d9438
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d412bcc3aef1ccec410b82fac74e4e55897d9438

Author: Rob Shearman <robertshearman at gmail.com>
Date:   Sun Dec 13 19:47:55 2009 +0000

rpcrt4: Handle [out]-only non-conformant strings in stubless servers.

---

 dlls/rpcrt4/ndr_stubless.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index 2028fed..5a66c25 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -999,6 +999,18 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
         size = ComplexStructSize(pStubMsg, pFormat);
         size *= pStubMsg->MaxCount;
         break;
+    case RPC_FC_C_CSTRING:
+    case RPC_FC_C_WSTRING:
+        if (*pFormat == RPC_FC_C_CSTRING)
+            size = sizeof(CHAR);
+        else
+            size = sizeof(WCHAR);
+        if (pFormat[1] == RPC_FC_STRING_SIZED)
+            ComputeConformance(pStubMsg, NULL, pFormat + 2, 0);
+        else
+            pStubMsg->MaxCount = 0;
+        size *= pStubMsg->MaxCount;
+        break;
     default:
         FIXME("Unhandled type %02x\n", *pFormat);
         /* fallthrough */




More information about the wine-cvs mailing list