wine/dlls/rpcrt4 ndr_marshall.c

Alexandre Julliard julliard at wine.codeweavers.com
Tue Nov 29 05:04:45 CST 2005


ChangeSet ID:	21517
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/29 05:04:45

Modified files:
	dlls/rpcrt4    : ndr_marshall.c 

Log message:
	Robert Shearman <rob at codeweavers.com>
	Fix the overflow check to not depend on pStubMsg->BufferStart and
	pStubMsg->BufferEnd being valid, because they aren't filled in when
	using MIDL-generated server stubs.
	Don't set the pointer to NULL on unmarshaling because we may want to
	unmarshal the value to an existing pointer instead of allocating a new
	one.

Patch: http://cvs.winehq.org/patch.py?id=21517

Old revision  New revision  Changes     Path
 1.37          1.38          +3 -4       wine/dlls/rpcrt4/ndr_marshall.c

Index: wine/dlls/rpcrt4/ndr_marshall.c
diff -u -p wine/dlls/rpcrt4/ndr_marshall.c:1.37 wine/dlls/rpcrt4/ndr_marshall.c:1.38
--- wine/dlls/rpcrt4/ndr_marshall.c:1.37	29 Nov 2005 11: 4:45 -0000
+++ wine/dlls/rpcrt4/ndr_marshall.c	29 Nov 2005 11: 4:45 -0000
@@ -97,8 +97,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole);
 #define ALIGN_POINTER(_Ptr, _Align) _Ptr = ALIGNED_POINTER(_Ptr, _Align)
 
 #define STD_OVERFLOW_CHECK(_Msg) do { \
-    TRACE("buffer=%d/%ld\n", _Msg->Buffer - _Msg->BufferStart, _Msg->BufferLength); \
-    if (_Msg->Buffer > _Msg->BufferEnd) ERR("buffer overflow %d bytes\n", _Msg->Buffer - _Msg->BufferEnd); \
+    TRACE("buffer=%d/%ld\n", _Msg->Buffer - (unsigned char *)_Msg->RpcMsg->Buffer, _Msg->BufferLength); \
+    if (_Msg->Buffer > (unsigned char *)_Msg->RpcMsg->Buffer + _Msg->BufferLength) \
+        ERR("buffer overflow %d bytes\n", _Msg->Buffer - ((unsigned char *)_Msg->RpcMsg->Buffer + _Msg->BufferLength)); \
   } while (0)
 
 #define NDR_TABLE_SIZE 128
@@ -752,8 +753,6 @@ void WINAPI PointerUnmarshall(PMIDL_STUB
     RpcRaiseException(RPC_X_BAD_STUB_DATA);
   }
 
-  *pPointer = NULL;
-
   if (pointer_id) {
     m = NdrUnmarshaller[*desc & NDR_TABLE_MASK];
     if (m) m(pStubMsg, pPointer, desc, fMustAlloc);



More information about the wine-cvs mailing list