Module: wine Branch: refs/heads/master Commit: 9318cb0fbc09eb29b303794e5686dcea95e00e03 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=9318cb0fbc09eb29b303794e...
Author: Robert Shearman rob@codeweavers.com Date: Mon Jul 17 20:19:14 2006 +0100
rpcrt4: Handle more structure padding values.
---
dlls/rpcrt4/ndr_marshall.c | 40 +++++++++++++++++++++++++++++++++++----- include/wine/rpcfc.h | 6 ++++++ 2 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c index b6ff54d..e1adfa0 100644 --- a/dlls/rpcrt4/ndr_marshall.c +++ b/dlls/rpcrt4/ndr_marshall.c @@ -1734,8 +1734,14 @@ static unsigned char * ComplexMarshall(P case RPC_FC_ALIGNM8: ALIGN_POINTER(pMemory, 8); break; + case RPC_FC_STRUCTPAD1: case RPC_FC_STRUCTPAD2: - pMemory += 2; + case RPC_FC_STRUCTPAD3: + case RPC_FC_STRUCTPAD4: + case RPC_FC_STRUCTPAD5: + case RPC_FC_STRUCTPAD6: + case RPC_FC_STRUCTPAD7: + pMemory += *pFormat - RPC_FC_STRUCTPAD1 + 1; break; case RPC_FC_EMBEDDED_COMPLEX: pMemory += pFormat[1]; @@ -1808,8 +1814,14 @@ static unsigned char * ComplexUnmarshall case RPC_FC_ALIGNM8: ALIGN_POINTER(pMemory, 8); break; + case RPC_FC_STRUCTPAD1: case RPC_FC_STRUCTPAD2: - pMemory += 2; + case RPC_FC_STRUCTPAD3: + case RPC_FC_STRUCTPAD4: + case RPC_FC_STRUCTPAD5: + case RPC_FC_STRUCTPAD6: + case RPC_FC_STRUCTPAD7: + pMemory += *pFormat - RPC_FC_STRUCTPAD1 + 1; break; case RPC_FC_EMBEDDED_COMPLEX: pMemory += pFormat[1]; @@ -1876,8 +1888,14 @@ static unsigned char * ComplexBufferSize case RPC_FC_ALIGNM8: ALIGN_POINTER(pMemory, 8); break; + case RPC_FC_STRUCTPAD1: case RPC_FC_STRUCTPAD2: - pMemory += 2; + case RPC_FC_STRUCTPAD3: + case RPC_FC_STRUCTPAD4: + case RPC_FC_STRUCTPAD5: + case RPC_FC_STRUCTPAD6: + case RPC_FC_STRUCTPAD7: + pMemory += *pFormat - RPC_FC_STRUCTPAD1 + 1; break; case RPC_FC_EMBEDDED_COMPLEX: pMemory += pFormat[1]; @@ -1939,8 +1957,14 @@ static unsigned char * ComplexFree(PMIDL case RPC_FC_ALIGNM8: ALIGN_POINTER(pMemory, 8); break; + case RPC_FC_STRUCTPAD1: case RPC_FC_STRUCTPAD2: - pMemory += 2; + case RPC_FC_STRUCTPAD3: + case RPC_FC_STRUCTPAD4: + case RPC_FC_STRUCTPAD5: + case RPC_FC_STRUCTPAD6: + case RPC_FC_STRUCTPAD7: + pMemory += *pFormat - RPC_FC_STRUCTPAD1 + 1; break; case RPC_FC_EMBEDDED_COMPLEX: pMemory += pFormat[1]; @@ -2003,8 +2027,14 @@ static unsigned long ComplexStructMemory ALIGN_LENGTH(size, 8); ALIGN_POINTER(pStubMsg->Buffer, 8); break; + case RPC_FC_STRUCTPAD1: case RPC_FC_STRUCTPAD2: - size += 2; + case RPC_FC_STRUCTPAD3: + case RPC_FC_STRUCTPAD4: + case RPC_FC_STRUCTPAD5: + case RPC_FC_STRUCTPAD6: + case RPC_FC_STRUCTPAD7: + size += *pFormat - RPC_FC_STRUCTPAD1 + 1; break; case RPC_FC_EMBEDDED_COMPLEX: size += pFormat[1]; diff --git a/include/wine/rpcfc.h b/include/wine/rpcfc.h index 9e1003c..fb479dd 100644 --- a/include/wine/rpcfc.h +++ b/include/wine/rpcfc.h @@ -88,7 +88,13 @@ #define RPC_FC_POINTER 0x36 #define RPC_FC_ALIGNM4 0x38 #define RPC_FC_ALIGNM8 0x39
+#define RPC_FC_STRUCTPAD1 0x3d #define RPC_FC_STRUCTPAD2 0x3e +#define RPC_FC_STRUCTPAD3 0x3f +#define RPC_FC_STRUCTPAD4 0x40 +#define RPC_FC_STRUCTPAD5 0x41 +#define RPC_FC_STRUCTPAD6 0x42 +#define RPC_FC_STRUCTPAD7 0x43
#define RPC_FC_STRING_SIZED 0x44