Rob Shearman
8e08b1dd7f
rpcrt4: Use safe_copy_from_buffer instead of direct memory copy in NdrBaseTypeUnmarshall.
...
This makes the code check that the buffer is big enough to read from
before copying the data from it. The safe_buffer_increment call is still
needed for the case where we point the memory to the buffer, so move the
call there.
2008-04-28 13:28:16 +02:00
Andrew Talbot
649c7aeb7c
rpcrt4: Remove unused variables.
2008-04-25 11:28:34 +02:00
Austin English
aab8fae59a
Spelling fixes.
2008-04-21 14:25:05 +02:00
Austin English
313a85f163
Spelling fixes.
2008-04-17 12:25:57 +02:00
Rob Shearman
e05ccfe2bb
rpcrt4: Add buffer size checks to base type unmarshalling.
...
Reimplement NdrSimpleTypeUnmarshall using similar macros to
NdrBaseTypeUnmarshalling without buffer checks, due to
NdrSimpleTypeUnmarshall not doing any safety checks.
2008-04-14 12:40:22 +02:00
Andrew Talbot
1f53b85445
rpcrt4: Void functions should not return a value.
2008-03-31 12:13:59 +02:00
Dan Hipschman
629a29d81e
rpcrt4: Handle FC_ENUM16.
2008-03-21 11:24:19 +01:00
Rob Shearman
a4b18699ac
rpcrt4: Only initialise the context handle to NULL in NdrContextHandleUnmarshall if it is an out-only or return one.
...
Fix the indentation and add tracing of the context handle flags.
2008-01-17 15:30:30 +01:00
Andrew Talbot
3c14ae6699
rpcrt4: Remove unneeded casts.
2008-01-17 13:42:14 +01:00
Rob Shearman
4f6142b8d9
rpcrt4: Handle complex arrays in calc_arg_size.
2008-01-14 15:31:37 +01:00
Rob Shearman
aabfc52573
rpcrt4: Fix the calculation of element sizes for complex arrays by using a new function ComplexStructSize that doesn't touch the buffer to calculate the size.
...
Otherwise, this would fail on arrays with a conformance or variance of zero.
2008-01-14 15:31:37 +01:00
Rob Shearman
4402daa00b
rpcrt4: Don't print fixmes for NDR types without a freeing function.
...
Not all types have a freeing function.
2008-01-14 13:39:03 +01:00
Rob Shearman
97b842c817
rpcrt4: Add support for calculating the memory size of complex types with embedded non-conformant strings.
2008-01-14 13:38:58 +01:00
Rob Shearman
23c9b6c161
rpcrt4: Add stubs for NdrCorrelationInitialize, NdrCorrelationPass and NdrCorrelationFree.
2008-01-07 22:55:34 +01:00
Rob Shearman
a0410bef34
rpcrt4: Print fixme's if the serialize or no-serialize flags are set on a context handle being marshalled or unmarshalled.
2008-01-07 12:32:31 +01:00
Rob Shearman
f9fc52f602
rpcrt4: Pass the interface identifier to the lower-level context handle routines for context handles with the strict flag set.
2008-01-07 12:32:07 +01:00
Rob Shearman
c8b3dc40a4
rpcrt4: Update todos.
2008-01-07 12:02:52 +01:00
Rob Shearman
86a0b1d24e
rpcrt4: Implement NdrConformantStringMemorySize.
2007-12-31 16:47:55 +01:00
Rob Shearman
eeeed91d92
rpcrt4: Implement non-conformant string functions.
2007-12-31 16:46:10 +01:00
Rob Shearman
3e8a032e8b
rpcrt4: Re-use existing memory for embedded pointers in NdrVaryingArrayUnmarshall.
2007-12-26 14:02:58 +01:00
Rob Shearman
273766ee6f
rpcrt4: Re-use existing memory for embedded pointers in NdrConformantVaryingArrayUnmarshall.
2007-12-26 14:02:55 +01:00
Rob Shearman
698ba6b4d4
rpcrt4: Implement higher-level NDR server context handle functions.
...
Implement NdrServerContextMarshall and NdrServerContextNewMarshall on
top of NDRSContextMarshall2. Implement NdrContextHandleInitialize,
NdrServerContextUnmarshall and NdrServerContextNewUnmarshall on top of
NDSContextUnmarshall2.
2007-12-26 13:26:38 +01:00
Rob Shearman
cf6d95c1b8
rpcrt4: Move low-level NDR context handle functions to a separate file.
2007-12-26 13:26:30 +01:00
Rob Shearman
64d1e2d8e3
rpcrt4: Set pStubMsg->BufferMark in NdrConformantVaryingArrayUnmarshall and NdrVaryingArrayUnmarshall.
...
pStubMsg->BufferMark should always be set before
EmbeddedPointerUnmarshall is called and these functions didn't
previously do so.
2007-12-23 13:55:27 +01:00
Rob Shearman
17eb6f44ad
rpcrt4: Print an error if stub buffer pointer is passed into safe_copy_from_buffer.
...
Also print an error message if there was an overflow.
2007-12-21 12:41:18 +01:00
Rob Shearman
9a888e6465
rpcrt4: Fix NdrConformantStringUnmarshall to always increment the buffer during unmarshalling.
...
safe_copy_from_buffer has the side-effect of incrementing the buffer and
this still needs to be done when we point the memory into the buffer.
(Thanks to Maarten Lankhorst for finding the mistake and suggesting a fix.)
2007-12-20 12:10:30 +01:00
Rob Shearman
22b20879f7
rpcrt4: Memory should only be cleared in ComplexUnmarshall, not in ComplexMarshall.
...
Also clear memory when FC_STRUCTPAD* is encountered.
2007-12-19 19:35:02 +01:00
Rob Shearman
50cab7736a
rpcrt4: Fix the ALIGN_POINTER_CLEAR macro.
2007-12-19 19:34:56 +01:00
Rob Shearman
b9c92e9564
rpcrt4: Don't copy memory from the buffer in NdrConformantStringUnmarshall if we just pointed the memory pointer into the buffer.
...
(Reported by Dan Kegel.)
2007-12-18 12:32:55 +01:00
Rob Shearman
259879d1f5
rpcrt4: Fix NdrConformantStringUnmarshall to use buffer memory if possible.
2007-12-17 11:58:06 +01:00
Rob Shearman
b300189c43
rpcrt4: Add a FIXME for RPC_FC_P_ALLOCALLNODES in PointerUnmarshall.
2007-12-17 11:58:00 +01:00
Rob Shearman
68432dd339
rpcrt4: Clear padding inserted into the buffer during marshalling because of alignment.
2007-12-17 11:57:54 +01:00
Rob Shearman
25bf0a409a
rpcrt4: Update TODO list.
...
Out-of-memory check is performed by NdrAllocate and so isn't required to
be done in the unmarshalling functions.
2007-12-14 12:24:34 +01:00
Rob Shearman
4a028589eb
rpcrt4: Document NdrAllocate.
2007-12-14 12:24:24 +01:00
Rob Shearman
c7261b732b
rpcrt4: Partially revert commit 18faf3184b2ea263d77c2a7ad92eef27bc4ba08f.
...
Tests show that NdrPointerFree (and hence NdrFree) don't check whether
the memory was allocated with NdrAllocate before freeing it. This makes
sense as servers don't need to use NdrAllocate to allocate memory being
returned and so this commit caused that memory to be leaked.
NdrAllocate hasn't been changed as the tests show it is correct and it
appears that the memory list is used to implement the RpcSs memory model.
2007-12-14 12:24:21 +01:00
Rob Shearman
ce220e2b5f
rpcrt4: Free the base pointer in PointerFree when freeing a pointer with RPC_FC_P_DEREF.
2007-12-14 12:24:03 +01:00
Rob Shearman
d5ff3467bc
rpcrt4: Fix the check in NdrPointerFree.
...
Add comments to justify why this is the only check that is needed.
2007-12-14 12:23:55 +01:00
Rob Shearman
ded4b86625
Revert "rpcrt4: Try to free every non-stack pointer in PointerFree now that NdrFree does the sanity checking for us.".
...
This reverts commit 6db648302ce43f625a073426a35a6f40b7869d8b.
Tests show the assumptions in a commit that this commit depends on are
not valid.
2007-12-14 12:23:38 +01:00
Rob Shearman
e12b487e26
rpcrt4: Try to free every non-stack pointer in PointerFree now that NdrFree does the sanity checking for us.
2007-12-12 16:02:53 +01:00
Rob Shearman
9c8c74f388
rpcrt4: Store allocated memory in a singly-linked list to keep track of what we should and shouldn't free in NdrFree.
2007-12-12 16:02:43 +01:00
Rob Shearman
766d8a17af
rpcrt4: Pass the USER_MARSHAL_CB structure into user marshal routines.
2007-12-10 12:04:28 +01:00
Rob Shearman
a07afe7e06
rpcrt4: Implement NdrConformantArrayMemorySize.
2007-12-10 12:04:15 +01:00
Rob Shearman
417b9d80f2
rpcrt4: Save the buffer in EmbeddedPointerMemorySize, like EmbeddedPointerUnmarshall does.
2007-12-08 19:58:11 +01:00
Rob Shearman
d7a0de303e
rpcrt4: Fix the return value from NdrSimpleStructMemorySize.
2007-12-08 19:58:07 +01:00
Rob Shearman
3a13de3115
rpcrt4: Add a trace to NdrBaseTypeMemorySize.
2007-12-08 19:58:03 +01:00
Rob Shearman
7ae1d44816
rpcrt4: Implement PointerMemorySize.
2007-12-08 19:57:55 +01:00
Rob Shearman
8348f0413d
rpcrt4: Fix NdrConformantStructUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
2007-12-08 19:57:46 +01:00
Rob Shearman
a5f9ed81e3
rpcrt4: Fix NdrFixedArrayUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
2007-12-08 19:57:39 +01:00
Rob Shearman
abbceb137a
rpcrt4: Fix NdrConformantArrayUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
2007-12-08 19:57:32 +01:00
Rob Shearman
ba6aec70ca
rpcrt4: Implement NdrConformantStructFree.
2007-12-07 17:06:05 +01:00