Commit Graph

1195 Commits

Author SHA1 Message Date
Alexandre Julliard 42dbdb138a rpcrt4: Make a variable static. 2008-12-04 12:48:08 +01:00
Alexandre Julliard 797ee403c1 rpcrt4: Create the NumMethods key too when registering an interface. 2008-11-29 13:05:11 +01:00
Alexandre Julliard ad54700b94 rpcrt4: Use RegDeleteTree to properly unregister interfaces. 2008-11-29 13:02:08 +01:00
Alexandre Julliard 77b3864fed rpcrt4: Convert the dll registration routines to Unicode. 2008-11-29 13:01:29 +01:00
Francois Gouget bbc4413548 rpcrt4: Remove WINAPI on static functions where not needed. 2008-11-26 12:10:54 +01:00
Alexandre Julliard f1d0f81d26 rpcrt4/tests: Fix test failures on Win9x. 2008-11-20 22:44:46 +01:00
Ricardo Filipe 16920c1da7 rpcrt4: Fixed dead increments (llvm/clang). 2008-11-19 12:15:37 +01:00
Andrew Talbot 99ae980c0d rpcrt4: Sign-compare warnings fix. 2008-11-07 10:56:48 +01:00
Stefan Leichter 79bbddd431 rpcrt4: Add stub for MesEncodeDynBufferHandleCreate. 2008-10-23 12:17:20 +02:00
Alexandre Julliard 83b6c8a5fa rpcrt4: Convert source files to utf-8. 2008-10-18 19:20:44 +02:00
Juan Lang a504a79d65 rpcrt4: Add tests for UuidCreate. 2008-10-14 13:41:56 +02:00
Rob Shearman b919443a58 rpcrt4: The type referred to by the wire_marshal attribute in server.idl must be a pointer.
Therefore, declare the structure as user_bstr_t and make wire_bstr_t
be a typedef to a pointer of this type.
2008-10-14 13:41:54 +02:00
Huw Davies c74de4a1ce rpcrt4: Actually set an unmarshalled object ptr to NULL when a NULL pointer id is received. 2008-10-02 10:28:19 -05:00
Rob Shearman 62a1beebbf rpcrt4: Don't call VirtualFree with MEM_RELEASE and non-zero size.
The calls fail with ERROR_INVALID_PARAMETER. Instead just call with a
zero size which performs the intended function.
2008-09-23 16:00:05 +02:00
Hans Leidekker e511474d47 rpcrt4: Add stub implementations for RpcMgmtInqStats and RpcMgmtStatsVectorFree. 2008-09-23 14:03:19 +02:00
Rob Shearman 34dd534250 rpcrt4: Fix memory leak of 0-byte buffer allocated during processing of bind packets.
In this case conn->server_binding will be NULL and consequently
bind->Handle will be NULL, causing I_RpcFreeBuffer to fail. Therefore
just use I_RpcFree to free the buffer as that is just what
I_RpcFreeBuffer does under the hood anyway.
2008-09-12 16:49:56 +02:00
Rob Shearman ffd37b0eec rpcrt4: Fix memory leaks of hdr in error paths in RPCRT4_io_thread. 2008-09-12 16:49:52 +02:00
Rob Shearman f12e445ce5 rpcrt4: Don't crash in NdrDllGetClassObject when a NULL pclsid is passed in.
Add tests for this.
2008-09-12 16:49:48 +02:00
Rob Shearman be9909ad1d rpcrt4: Print error messages from RPC message functions when they are called in an invalid way. 2008-09-12 16:49:45 +02:00
Rob Shearman 8cc3adea52 rpcrt4: Free the memory for a registered interface that is in use and when WaitForCallsToComplete is 0. 2008-09-12 16:49:42 +02:00
Alexandre Julliard da95db8d5b rpcrt4/tests: Fix a couple of test failures on Windows. 2008-09-11 14:32:30 +02:00
Paul Vriens 9ee160cf55 rpcrt4/tests: Fix some failures on XP-SP3. 2008-09-11 11:43:14 +02:00
Rob Shearman a8f7c716ef rpcrt4: Change type of len parameter of NdrAllocate from size_t to SIZE_T.
Use SIZE_T as it matches the size that Windows programs expect whereas
size_t is platform-dependent.
2008-09-08 12:51:37 +02:00
Rob Shearman f2e47cc2a2 rpcrt4: Fix typo in unescape_string_binding_componentW.
string_binding is of type "const WCHAR *" so we shouldn't be calling
strlen on it, we should be calling strlenW on it.
2008-09-08 12:47:20 +02:00
Rob Shearman 170dd5ff8d rpcrt4: Only start the RpcSs process for handles to the local server. 2008-09-08 12:47:20 +02:00
James Hawkins bb6a8f36c3 rpcrt4: Fix a failing test in Vista. 2008-09-03 14:21:42 +02:00
James Hawkins 6b20075b1f rpcrt4: Remove a test that was replaced by a better test. 2008-09-03 13:14:51 +02:00
James Hawkins 080d8e7261 rpcrt4: Fix several test failures in Vista. 2008-08-29 13:24:22 +02:00
Paul Vriens 00662a190d rpcrt4/tests: Skip ok check for win9x. 2008-08-28 11:24:49 +02:00
Rob Shearman bce9cd38b0 rpcrt4: Add tests for RpcBindingReset. 2008-08-27 13:21:21 +02:00
Rob Shearman 739d89369b rpcrt4: Implement RpcBindingReset. 2008-08-19 12:54:31 +02:00
Rob Shearman e98539520d rpcrt4: Don't get or create an association for bindings with incomplete endpoints.
It's inefficient since the association will have to be replaced before
the binding can be used to connect to a server.
2008-08-19 12:54:26 +02:00
Rob Shearman 6ed020d813 rpcrt4: Check for previous association being NULL in RPCRT4_ResolveBinding.
bind->Assoc could be NULL if the binding hasn't been resolved.
2008-08-19 12:54:21 +02:00
Rob Shearman c5dd3f079c rpcrt4: Test the endpoint mapper for the ncalrpc protseq as well as the ncacn_np protseq. 2008-08-19 12:25:42 +02:00
Rob Shearman 27ae234b04 rpcrt4: Remove unreachable code in EmbeddedComplexSize.
RPC_FC_ERROR_STATUS_T has a value of 0x10 and therefore isn't a
possible value of "flags_type & 0xf" in the switch statement.
2008-08-18 17:34:13 +02:00
Rob Shearman ef5a5a4490 rpcrt4: Fix RpcStringBindingComposeA/W and RpcStringBindingParseA/W to escape and unescape delimiters in the string binding.
This behaviour is stated by the DCE/RPC specification and is also
shown in the rpcrt4 conformance tests.
2008-08-18 14:36:45 +02:00
Rob Shearman 0a5e5a6e5b rpcrt4: Print a warning if connecting to a named pipe failed in rpcrt4_conn_open_pipe in the !wait case. 2008-08-18 14:36:33 +02:00
Rob Shearman d2d513db74 rpcrt4: Fix RpcBindingToStringBinding to not generate a UUID string if the object UUID is nil. 2008-08-18 14:36:28 +02:00
Rob Shearman 90bd74081a rpcrt4: Add test for RpcBindingToStringBindingA. 2008-08-18 14:36:23 +02:00
Rob Shearman ce085ed8ec rpcrt4: Check that strings in SMB, NB and pipe floors are nul-terminated before copying the data. 2008-08-18 14:35:43 +02:00
Rob Shearman 1e46fc672a rpcrt4: Fix the protid used in ncalrpc tower functions.
The epm tower for the ncalrpc protseq should have a floor with a
protid of EPM_PROTOCOL_PIPE instead of EPM_PROTOCOL_SMB.
2008-08-18 14:35:26 +02:00
Rob Shearman 498216fc11 rpcrt4: Fix crash in rpcrt4_ncalrpc_parse_top_of_tower due to unconditionally dereferencing networkaddr and endpoint variables.
These can be NULL when parts of the tower are not required.
2008-08-18 14:35:21 +02:00
Rob Shearman 54e904e780 rpcrt4: Fix crash calculation of tower size in rpcrt4_ncalrpc_get_top_of_tower.
The size depends on the length of the endpoint string, not the network
address string.
2008-08-18 14:35:15 +02:00
Rob Shearman cdb9625dbd rpcrt4: Fix a typo in the ncalrpc protseq in the epm_endpoints structure. 2008-08-18 14:35:10 +02:00
Rob Shearman 2652ddfeba rpcrt4: Re-implement part of the conformant varying structure processing routines using array_* functions. 2008-08-18 14:34:41 +02:00
Rob Shearman b2305adc3c rpcrt4: Factorise conformant string functions into array_* functions.
This allows conformant string array types to be
marshalled/unmarshalled when embedded in a complex type.
2008-08-18 14:34:40 +02:00
Rob Shearman 9e3260847a rpcrt4: Factorise conformant varying array functions into array_* functions.
This allows conformant varying array types to be
marshalled/unmarshalled when embedded in a complex type.
2008-08-18 14:34:40 +02:00
Rob Shearman 518242ef33 rpcrt4: Add tests for a complex struct with conformant array. 2008-08-18 14:34:40 +02:00
Rob Shearman 9116d73c63 rpcrt4: Factorise conformant array NDR functions and use them to fix the wire-representation of complex structures with conformant arrays.
Factorise each conformant array function into the part that deals with
reading, writing or sizing the conformance and another part that deals
with reading, writing or sizing the variance and the element data.

This allows complex structures to use the right wire format where the
conformance appears before the structure data starts.
2008-08-18 14:34:40 +02:00
Rob Shearman 1eaea13ebb rpcrt4: Validate the uuid portion of the string passed to RpcStringBindingParseA/W. 2008-07-31 13:25:55 +02:00
Francois Gouget eb16f43bdf Add some API documentation stubs to make winapi_check happy. 2008-07-28 11:34:45 +02:00
Alexandre Julliard d96e3964b7 make_makefiles: Explicitly list the Wine headers that should be exported. 2008-07-23 11:40:43 +02:00
Rob Shearman 8af1dba5a9 rpcrt4: Fix the memory pointer passed into the conformant array marshaller in NdrComplexStructMarshall.
It needs to be the end of the memory used by the constant part of the
structure, which is returned by CompkexStructMarshall.
2008-07-16 17:54:48 +02:00
Rob Shearman 7551b82cca rpcrt4: Implement RpcCancelThreadEx.
Implement RpcCancelThreadEx using existing code moved into a new
function, rpc_ccancel_thread.

Implement RpcCancelThread based on RpcCancelThreadEx with timeout of 0.
2008-07-14 12:29:46 +02:00
Andrew Talbot ab6efdd1e4 rpcrt4: Remove unneeded address-of operator from array name. 2008-07-14 11:50:08 +02:00
Rob Shearman 09f343b135 rpcrt4: Ignore the return value of functions when unmarshalling a pickled procedure. 2008-07-14 11:48:25 +02:00
Rob Shearman 2b0ad6e6e7 rpcrt4: Implement MesDecodeBufferHandleCreate and MesEncodeFixedBufferHandleCreate. 2008-07-14 11:48:16 +02:00
Rob Shearman 734094ed2c rpcrt4: Implement NdrMesProcEncodeDecode. 2008-07-14 11:48:08 +02:00
Rob Shearman 0879041cd2 rpcrt4: Implement MesEncodeIncrementalHandleCreate, MesDecodeIncrementalHandleCreate, MesIncrementalHandleReset and MesHandleFree. 2008-07-14 11:47:46 +02:00
Alexandre Julliard 79c64acc7b tests: Don't depend on the static uuid libraries in the tests.
This avoids trouble with the broken MingW libraries when
cross-compiling the tests.
2008-07-08 17:51:45 +02:00
James Hawkins 490443ed4b rpcrt4: Fix a test that fails in win2k3. 2008-07-08 10:48:06 +02:00
Alexandre Julliard 6f8749b7bc rpcrt4: Use interlocked functions to increment/decrement ref counts. 2008-07-07 12:11:24 +02:00
Rob Shearman b75828fc90 rpcrt4: Clear the memory of embedded complex types in ComplexUnmarshall when fMustAlloc is TRUE to avoid passing uninitialised memory to the unmarshaller.
Found by Valgrind.
2008-07-07 12:11:24 +02:00
Rob Shearman 666b57d62f include: Remove unused file wine/rpcss_shared.h. 2008-07-07 11:11:02 +02:00
Rob Shearman 620d783680 rpcrt4: Don't reserve space in the buffer for reference pointers embedded in complex types.
Ref pointers don't need a pointer ID and reserving space would render
the code incompatible with other clients. Note that the pointer
marshalling/unmarshalling functions didn't actually read/write pointer
IDs to/from the reserved space in the buffer.
2008-07-04 19:49:00 +02:00
Rob Shearman 5887be5717 rpcrt4: Implement memory sizing for pointers in complex types. 2008-07-04 19:48:47 +02:00
Rob Shearman 81b4436add rpcrt4: The conformant array offset in complex structs should be signed. 2008-07-04 19:48:38 +02:00
Rob Shearman 44649e855a rpcrt4: Fix NdrComplexArrayUnmarshall and NdrComplexStructUnmarshall to reuse memory for embedded pointers. 2008-07-04 19:48:30 +02:00
Rob Shearman 517844e054 rpcrt4: Support calculating the size in memory of range types embedded in complex types. 2008-07-04 19:47:58 +02:00
James Hawkins d0a8fd48a9 rpcrt4: Fix a failing test in win2k. 2008-07-02 12:17:01 +02:00
Rob Shearman 182a2ae315 rpcrt4: Reset the BufferLength to the used part of the buffer in NdrProxySendReceive.
This avoids sending uninitialised data on the wire.
2008-07-02 11:38:37 +02:00
James Hawkins ee24a372be rpcrt4: Fix a few failing tests in win2k. 2008-07-01 15:00:08 +02:00
Rob Shearman 456326281d rpcrt4: Add a comment in NdrSendReceive explaining why we change the BufferLength. 2008-07-01 12:26:37 +02:00
Alexandre Julliard e213ac9aca widl: Add some support for unencapsulated unions that need a conformance descriptor. 2008-07-01 12:25:44 +02:00
Detlef Riekenberg 74b78100f3 rpcrt4: Add a stub for I_RpcBindingInqTransportType. 2008-06-26 21:07:22 +02:00
Rob Shearman 1a978cb460 rpcrt4: Add tests for endpoint mapper functions. 2008-06-26 12:20:31 +02:00
Rob Shearman 45a3462c32 rpcrt4/rpcss: Remove old named pipe code for communicating with RPCSS process. 2008-06-26 12:20:24 +02:00
Rob Shearman 9e1c7a30c7 rpcrt4: Use DCE/RPC to contact the endpoint-mapper server. 2008-06-26 12:18:35 +02:00
Rob Shearman 0c095ee0d3 rpcrt4: Fix NdrConformantVaryingStructUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers. 2008-06-23 19:46:29 +02:00
Rob Shearman 33e907bc9d rpcrt4: Factor out string validation from NDR unmarshalling functions into a separate function, validate_string_data. 2008-06-23 19:46:29 +02:00
Kai Blin 533419cb35 rpcrt4: Ignore the AuthzSvr parameter for RPC_C_AUTHN_WINNT. 2008-06-23 14:04:46 +02:00
Kai Blin a3bd1f8635 rpcrt4: Fix some A/W use in error messages. 2008-06-23 14:04:44 +02:00
Rob Shearman f82488823b rpcrt4: Add test for using a conformant varying structure with pointers. 2008-06-23 14:04:39 +02:00
Rob Shearman cc199b777e rpcrt4: Initialise UniquePtrCount in NdrServerInitializeNew. 2008-06-23 12:49:06 +02:00
Rob Shearman 7f1b7c51be include: Add new bitfields to MIDL_STUB_MESSAGE added in Vista SDKs.
Move fBufferValid to a bitfield and update the corresponding tests in rpcrt4.
Add tests for the new fields.
2008-06-23 12:48:59 +02:00
Rob Shearman 4bde42aaa2 rpcrt4: Use abrtitrary pointer identifiers when marshalling pointers instead of using pointer values.
This ensures that no information about the server memory layout is
leaked to clients.
2008-06-21 11:12:58 +02:00
Rob Shearman 6cf9e441ad rpcrt4: Initialise UniquePtrCount in NdrClientInitializeNew. 2008-06-21 11:12:54 +02:00
Rob Shearman 52911fc66c include: Update the MIDL_STUB_MESSAGE structure.
Reduce the size of the IsClient field, as is done in the latest SDKs
to fix NdrClientInitializeNew tests on XP SP3 and Win2003+.
2008-06-19 11:54:49 +02:00
Rob Shearman 6bb26abe81 rpcrt4: Make RpcAssoc_BindConnection use RPCRT4_ReceiveWithAuth instead of RPCRT4_Receive.
Move the special handling of the PKT_BIND_ACK packet from
RPCRT4_ReceiveWithAuth to RpcAssoc_BindConnection, where it belongs.
2008-06-19 11:44:28 +02:00
Rob Shearman 6bb03d7dba rpcrt4: Add new function RPCRT4_ReceiveWithAuth to receive a fragment and return the authentication data received, if any. 2008-06-19 11:44:22 +02:00
Rob Shearman dec4acd8fe rpcrt4: Rename RPCRT4_SendAuth to RPCRT4_SendWithAuth. 2008-06-19 11:44:17 +02:00
Rob Shearman 9060d2aaab Update generated packing tests using current headers. 2008-06-18 15:21:48 +02:00
Rob Shearman 3f92030e2d rpcrt4: Zero the memory of the s1 structure in test_simple_struct to avoid a Valgrind warning. 2008-06-18 13:50:08 +02:00
Rob Shearman fd8cb3f9c2 rpcrt4: Reduce the timeout of waiting on the stop event in the server test to one second.
The stop event should already be signaled by the time we get to that
point since we wait until the child processes terminate in the server
process and the stop event is signaled in the context of one of the
child processes.

Don't call RpcMgmtWaitServerListening if the call to
WaitForSingleObject failed since it is likely that s_stop() hasn't
been called and therefore the call to RpcMgmtWaitServerListening won't
ever return.
2008-06-18 13:50:01 +02:00
Rob Shearman 9ce356c966 rpcrt4: Save the previous BufferLength in test_ndr_buffer and use it when testing the expected buffer length after the NdrFreeBuffer call.
This fixes a test failure on Win2003 upwards when the allocated length
appears to be rounded up to a multiple of 4.
2008-06-18 13:49:56 +02:00
Rob Shearman c9ef063e12 rpcrt4: Fix ndr_marshall tests to cope with using pointer ids instead of using pointer values.
This fixes a number of test failures on XP SP3 and Win2003 upwards.
2008-06-18 13:49:48 +02:00
Rob Shearman 9196337e09 rpcrt4: Clear a hole in the ps1 structure in test_simple_struct. 2008-06-13 10:17:03 +02:00
Rob Shearman c82ffcec60 rpcrt4: Initialise the array to be marshalled in test_conformant_array. 2008-06-13 10:16:51 +02:00
Paul Vriens e7ef88beda rpcrt4/tests: Fix test failures for win9x, NT4, W2K and XP-SP1. 2008-06-12 12:03:30 +02:00
Rob Shearman a1a5d8d02a rpcrt4: Use RpcServerRegisterIfEx with RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH in the server test.
This allows the test to run correctly on XP SP2 upwards instead of
failing with ERROR_ACCESS_DENIED.
2008-06-10 11:33:21 +02:00
Rob Shearman d6503215ef include: Add some missing defines and function declarations to rpcdce.h. 2008-06-10 11:33:13 +02:00
Alexandre Julliard 853db9a79d rpcrt4: Properly handle the case of a client having disconnected in rpcrt4_conn_listen_pipe. 2008-06-09 12:56:42 +02:00
James Hawkins 3978df4e52 rpcrt4: Trace the results of two statuses that return different results across platforms. 2008-05-26 18:00:08 +02:00
Maarten Lankhorst fd7b277d8a rpcrt4: Fix ndr_marshall test failures.
Created with help from Robert Shearman.
2008-05-07 20:22:56 +02:00
Rob Shearman 02c66c2312 rpcrt4: Add better traces for the server test.
Handle failure to use one or more protocol sequences more gracefully, as 
ncacn_np servers aren't support on Win9x and ncacn_ip_tcp fails on some 
machines.
2008-05-07 17:48:12 +02:00
Francois Gouget 42a61d7ed7 Assorted spelling fixes. 2008-05-06 16:10:20 +02:00
Alexandre Julliard dad21bbcbf makefiles: List the static libraries as normal imports instead of extra libs. 2008-04-30 14:23:55 +02:00
Alexandre Julliard ef07d83405 Include wine/port.h everywhere we use exceptions. 2008-04-29 20:18:49 +02:00
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
Steven Edwards d0ddece843 rpcrt4: Correct the number of aguments for fill_method on unsupported architectures. 2008-04-21 18:32:02 +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
Marcus Meissner bd38e2b0ed rpcrt4: Handle exit path where bind not allocated yet. 2008-04-16 14:12:30 +02:00
Rob Shearman 4efff32291 rpcrt4: Test and fix I_RpcExceptionFilter. 2008-04-16 14:07:31 +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
Rob Shearman 9a2914b11f rpcrt4: Implement I_RpcExceptionFilter. 2008-04-11 12:12:30 +02:00
Rob Shearman 8aeb2858e4 rpcrt4: Add a reference to the binding object in I_RpcNegotiateTransferSyntax and release the reference in I_RpcFreeBuffer.
This is needed because a context binding handle could be released on 
unmarshall, but it still needs to stay valid until the binding handle is 
no longer being used.

Re-use the previously unused RPCRT4_ExportBinding function as 
RPCRT4_AddRefBinding and rename RPCRT4_DestroyBinding to 
RPCRT4_ReleaseBinding to show that it's purpose is to release a 
reference count and destroy if necessary, not always destroy.
2008-04-01 19:11:00 +02:00
Rob Shearman c7f9b9347f rpcrt4: Improve trace in RPCRT4_find_interface to print the interface identifier data as well as the object guid. 2008-04-01 19:10:48 +02:00
Andrew Talbot 1f53b85445 rpcrt4: Void functions should not return a value. 2008-03-31 12:13:59 +02:00
Rob Shearman c06f26f2e3 rpcrt4: Print an error if an invalid client context handle is used. 2008-03-28 21:42:15 +01:00
Dan Hipschman 2fa83d94c8 widl: Make structures with FC_ENUM16 fields complex.
Structures containing enum fields without the v1_enum attribute must be
treated as complex because of the range check and memory/wire size
differences.  This includes a test which didn't pass before and now
passes on Wine and Windows.
2008-03-21 11:24:28 +01:00
Dan Hipschman 629a29d81e rpcrt4: Handle FC_ENUM16. 2008-03-21 11:24:19 +01:00
Dan Hipschman 764cf334d6 rpcrt4: Use correct count in rpcrt4_conn_np_write.
count is the total count passed into rpcrt4_conn_np_write.  If WriteFile
does a partial write it would end up writing too much subsequent times
through the loop.  All tests pass as before.
2008-03-20 14:27:34 +01:00
Rob Shearman f15287dea7 rpcrt4: Add a stub for RpcCancelThreadEx. 2008-03-17 15:20:07 +01:00
Andrew Talbot db6a901bf4 rpcrt4: Assign to structs instead of using memcpy. 2008-03-14 11:21:29 +01:00
Rob Shearman 0e7b25349d rpcrt4: Fix the pointer level being passed into call_unmarshaller in client_do_args_old_format for base return parameters.
NdrBaseTypeUnmarshall expects a pointer to a pointer to a base type. 
pRetVal contains a pointer to a base type, so we need to pass the 
address of pRetVal into call_unmarshaller here.
2008-03-10 19:25:55 +01:00
Rob Shearman 259ccc573c rpcrt4: Fix -Oi interpreter for base types.
Don't call memory sizing rountines to compute the size of a type, since
memory sizing routines have side effects like checking there is enough
space in the buffer for the type and incrementing the buffer pointer.
Instead, create a function which returns the necessary size of the
limited set of types we can encounter and remove call_memory_sizer which
is no longer needed.
2008-03-10 19:12:54 +01:00
Rob Shearman a5599028ea rpcrt4: Check that the input to RPCRT4_strndupW was not NULL before assuming that the string couldn't be allocated due to lack of memory. 2008-03-10 19:12:54 +01:00
Rob Shearman a1e4bcda1a rpcrt4: Use closesocket to close sockets and define it to close on Unix platforms to make the code more portable. 2008-03-06 17:39:31 +01:00
Rob Shearman 48000893f9 makefiles: Simplify the use of the IMPORTLIB variable in the DLL makefiles.
Only specify the root to keep platform-specifics out of the individual 
DLL makefiles.
2008-03-04 20:55:01 +01:00
James Hawkins 00394486df janitorial: Remove links to any microsoft site. 2008-03-01 12:03:59 +01:00
Rob Shearman 5dd2f1efa8 Include config.h and wine/port.h in files that use snprintf. 2008-02-29 12:39:28 +01:00
Paul Vriens 6832c8327d rpcrt4/tests: Make tests run on win9x/NT4 again. 2008-02-28 12:57:02 +01:00
Rob Shearman f7628b69b0 rpcrt4: Add tests for RpcStringBindingParseA. 2008-02-28 10:50:57 +01:00
Rob Shearman 5fce2d8839 rpcrt4: Don't crash in RpcStringBindingParseA/W if Endpoint or Options is NULL. 2008-02-28 10:50:57 +01:00
Rob Shearman 0287289475 rpcrt4: Include ws2tcpip.h instead of Unix headers when targeting a build for Windows. 2008-02-25 13:27:54 +01:00
Dan Hipschman 2d7b1f18b1 widl: Allow is_string_type to work for typedef'd types. 2008-02-22 12:04:26 +01:00
Rob Shearman 8608e895eb Add a new convenience macro for an exception handler that handles all exceptions.
When using native compiler exceptions, the previous method of doing 
this, __EXCEPT(NULL), would expand to __except( 
(NULL)(GetExceptionInformation())) which doesn't compile as NULL isn't a 
function.

So add a new macro, __EXCEPT_ALL, which works correctly both when using 
native compiler exceptions and without and which makes the meaning of 
code in which it is used clearer.
2008-02-16 14:58:24 +01:00
Rob Shearman a82f4dd9b7 Don't use GetExceptionCode and GetExceptionInformation in exception filter functions.
When using native compiler exceptions, it isn't valid to use 
GetExceptionCode and GetExceptionInformation anywhere other than in the 
filter or handler blocks since it would be very hard for the compiler to 
work out where to retrieve the exception information from on the stack.

Therefore, remove the WINE_EXCEPTION_FILTER and WINE_FINALLY_FUNC macros 
which enabled GetExceptionCode, GetExceptionInformation and 
AbnormalTermination to be used inside of the functions they declared and 
fix up all callers to access the information directly.
2008-02-16 14:57:44 +01:00
Rob Shearman 610c213f6d rpcrt4: Add some traces to async_notifier_proc.
Make the test of the return value of wait_for_incoming_data less strict.
2008-02-15 09:53:16 +01:00
Paul Vriens e2539cb9e5 rpcrt4/tests: Don't crash on WinXP SP3. 2008-02-11 20:41:40 +01:00
Paul Vriens 517168b4c5 rpcrt4/tests: Vista uses the same status values as Windows 2003. 2008-02-11 20:41:40 +01:00
Paul Vriens 8554db9f5c rpcrt4/tests: Skip rest of the tests if we fail. 2008-02-08 12:08:32 +01:00
Paul Vriens a9e29c7576 rpcrt4/tests: Change test for Windows 2003. 2008-02-08 12:08:25 +01:00
Alexandre Julliard 05c7174909 tests: Add a helper routine to wait for a child process and propagate its result correctly. 2008-02-07 12:56:00 +01:00
Rob Shearman 1ceef1e149 rpcrt4: Fix potential memory leaks on error paths in RPCRT4_io_thread. 2008-02-05 12:19:37 +01:00
Rob Shearman 8e667fd89c rpcrt4: Fix potential memory leaks in RPCRT4_Receive. 2008-02-05 12:19:37 +01:00
Rob Shearman 7bc9e425f1 rpcrt4: Fix memory leaks in the rpc tests. 2008-02-04 13:04:37 +01:00
Rob Shearman 3024b530c9 rpcrt4: Fix some incorrect checks in RPCRT4_Receive. 2008-02-04 13:02:49 +01:00
Rob Shearman 7277113af3 rpcrt4: Check the return value of RPCRT4_ClientAuthorize in RPCRT4_Send. 2008-01-23 20:45:55 +01:00
Rob Shearman 2badb4faea rpcrt4: Pass the SPN input to RpcBindingSetAuthInfoA/W into InitializeSecurityContextW instead of AcquireCredentialsHandleA/W. 2008-01-23 20:45:52 +01:00
Rob Shearman fef5ce52ce rpcrt4: Fix the error handling in RpcBindingSetAuthInfoA/W when RpcAuthInfo_Create fails.
Don't release the old auth info until we successfully have a new auth 
info and return failure to the caller if RpcAuthInfo_Create fails.
2008-01-23 20:45:44 +01:00
Marcus Meissner 20dcbc3de9 rpcrt4: Initialize CurrentHeader. 2008-01-23 12:05:24 +01:00
Rob Shearman 426418f725 rpcrt4: Don't set BufferStart and BufferEnd in NdrStubCall2.
The operations peformed by the stubless code should roughly match what 
operations MIDL outputs in code, and it doesn't do this.
2008-01-22 11:18:56 +01:00
Rob Shearman e2578c5bb6 rpcrt4: Remove some unimplemented win9x-only spec entries.
We're never going to implement the undocumented ones and we're moving 
more and more towards the architecture of the more recent versions of 
native rpcrt4.
2008-01-21 12:42:06 +01:00
Rob Shearman 2b0d3b7400 rpcrt4: Move the receiving of an individual fragment to a separate function. 2008-01-21 12:42:02 +01:00
Rob Shearman 5f077bab07 rpcrt4: Implement asynchronous RPC support. 2008-01-21 12:41:51 +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
Rob Shearman 6ec9e0c77a rpcrt4: Add an exception handler for stubless object proxies. 2008-01-17 15:30:18 +01:00
Andrew Talbot 3c14ae6699 rpcrt4: Remove unneeded casts. 2008-01-17 13:42:14 +01:00
Rob Shearman 68c8e5fe41 rpcrt4: Add tests for RPC_FC_P_DEREF|RPC_FC_P_ONSTACK pointers. 2008-01-16 15:34:26 +01:00
Francois Gouget f6fab295f3 Fix spelling error in the generated conformance test files. 2008-01-16 12:46:18 +01:00
Rob Shearman ffffcfa239 rpcrt4: Move the setting of retval_ptr outside of any particular stub phase in stub_do_args and stub_do_old_args.
After the change in order of phases it was no longer being set in the 
last phase and so caused all stubless functions to appear to have no 
return value.
2008-01-16 12:15:51 +01:00
Rob Shearman 1a3d7c77a5 rpcrt4: Allow NULL networkaddr and endpoint in rpcrt4_np_get_top_of_tower.
Add tests for this.
2008-01-15 14:35:35 +01:00
Rob Shearman ed5b296289 rpcrt4: The initialisation of [out] variables in the stubless code must be after the unmarshaling of [in] and [in, out] variables has been completed.
This is because the size of an [out] variable could depend on a
conformance value stored in an unmarshalled [in] or [in,out] variable.
2008-01-14 15:31:37 +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 516008ff5f rpcrt4: Add traces to the start of TowerConstruct and TowerExplode. 2008-01-14 13:39:08 +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 576c9dc6fa rpcrt4: Allocate a context handle if a NULL GUID is being unmarshalled. 2008-01-14 13:38:53 +01:00
Rob Shearman a04641c15b rpcrt4: Split RPCRT4_process_packet out into separate functions. 2008-01-11 12:25:59 +01:00
Rob Shearman 492947aa02 rpcrt4: Fix a memory leak in the cstub tests. 2008-01-09 13:38:02 +01:00
Rob Shearman 24ba6a5cc6 rpcrt4: Fix memory leaks in the ndr_marshall tests. 2008-01-09 13:38:02 +01:00
Rob Shearman 52f08dd510 rpcrt4: Fix memory leak in NdrFullPointerXlatFree.
First of all, the code was freeing the wrong pointer (i.e. the pointer
supplied by the caller of one of the NdrFullPointer* functions, not the
PFULL_PTR_TO_REFID_ELEMENT. Second, the code wasn't following the Next
link to the next entry in the list.
2008-01-09 13:38:02 +01:00
Rob Shearman 5be085dec5 rpcrt4: Fix a leak of msg in RPCRT4_io_thread on the error paths. 2008-01-09 12:25:56 +01:00
Rob Shearman e0c67a189b rpcrt4: Implement NdrMapCommAndFaultStatus.
Add tests for this function.
2008-01-09 12:25:50 +01:00
Rob Shearman c370980dfa rpcrt4: Use send on a socket instead of write as it's more portable. 2008-01-09 12:25:46 +01:00
Rob Shearman af4639f74a rpcrt4: Improve error handling in RPCRT4_io_thread and remove commented-out code. 2008-01-08 14:02:56 +01:00
Rob Shearman d0f914befc rpcrt4: Bind to the server interface in I_RpcGetBuffer, not I_RpcSendReceive.
The actual sending of the request is still done in I_RpcSendReceive though.

Disallow the server from calling I_RpcSend and I_RpcReceive to allow 
simplification of the code. The releasing of the connection is now done 
in I_RpcFreeBuffer.

Implement I_RpcNegotiateTransferSyntax.
2008-01-08 14:00:50 +01:00
Rob Shearman bb78c3f86d rpcrt4: Remove some unused includes. 2008-01-08 14:00:46 +01:00
Rob Shearman 9ff15252d0 rpcrt4: Set the fBufferValid flag in NdrProxyGetBuffer.
Only call IRpcChannelBuffer_FreeBuffer in NdrProxyFreeBuffer if 
fBufferValid is set.
2008-01-08 14:00:44 +01:00
Rob Shearman e2e7916739 rpcrt4: Set ReservedForRuntime to NULL in NdrClientInitializeNew. 2008-01-07 22:55:48 +01:00
Rob Shearman ea44471088 rpcrt4: Implement RpcAsyncInitializeHandle. 2008-01-07 22:55:46 +01:00
Rob Shearman 1da9d47f1b rpcrt4: Add tests for some async RPC functions. 2008-01-07 22:55:44 +01:00
Rob Shearman fef28ec6cb rpcrt4: Add stubs for asynchronous functions. 2008-01-07 22:55:41 +01:00
Rob Shearman b0cbf664f6 rpcrt4: Add stubs for I_RpcAsyncSetHandle and I_RpcAsyncAbortCall. 2008-01-07 22:55:39 +01:00
Rob Shearman 807a203f77 rpcrt4: Call NdrCorrelationInitialize and NdrCorrelationFree from NdrClientCall2 if new correlation descriptors have been specified. 2008-01-07 22:55:37 +01:00
Rob Shearman 23c9b6c161 rpcrt4: Add stubs for NdrCorrelationInitialize, NdrCorrelationPass and NdrCorrelationFree. 2008-01-07 22:55:34 +01:00
Rob Shearman f9a54a58d5 rpcrt4: ndr_stubless.h should include ndrtypes.h as it depends on types it defines. 2008-01-07 22:55:32 +01:00
Rob Shearman 31676530c2 rpcrt4: Set the ProcNum of RPC_MESSAGE in NdrClientInitializeNew to include RPC_VALID_FLAGS_BIT.
Mask out RPC_VALID_FLAGS_BIT from ProcNum when it is used to build a 
packet to send to the server.
2008-01-07 22:55:28 +01:00
Rob Shearman 4d6aa7ca95 rpcrt4: Add tests for the RPC_MESSAGE members set by NdrClientInitializeNew. 2008-01-07 22:55:22 +01:00
Rob Shearman f296a8ca6c rpcrt4: Implement I_RpcMapWin32Status.
Add a test for this function.
2008-01-07 12:41:17 +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 0e6d5202c8 rpcrt4: Don't set Buffer to NULL in I_RpcFreeBuffer. 2008-01-07 12:04:31 +01:00
Rob Shearman 1bb6c1b4d1 rpcrt4: Add some tests for NdrGetBuffer and NdrFreeBuffer. 2008-01-07 12:04:28 +01:00
Rob Shearman c8b3dc40a4 rpcrt4: Update todos. 2008-01-07 12:02:52 +01:00
Rob Shearman 56da854c21 rpcrt4: Fix NdrGetBuffer to set the correct fields in the MIDL_STUB_MESSAGE structure.
Fix NdrFreeBuffer to use the fBufferValid flag to determine whether or 
not I_RpcFreeBuffer needs to be called.
2007-12-31 17:14:34 +01:00
Rob Shearman 4aff0cdac4 rpcrt4: Make some variables in the tests static. 2007-12-31 17:14:29 +01:00
Rob Shearman 07622b0f05 rpcrt4: Add tests for NdrServerInitializeNew. 2007-12-31 17:14:22 +01:00
Rob Shearman e745f93c79 rpcrt4: Fix the MIDL_STUB_MESSAGE fields set by NdrServerInitializeNew. 2007-12-31 17:14:16 +01:00
Rob Shearman f6a29a1e73 rpcrt4: Fix a case of destroying a context handle without first releasing the lock.
Reverse the order of the release statements in NDRSContextMarshall2 for 
the case where the context handle doesn't have valid data so that the 
release that releases the lock comes first and then the optional second 
release doesn't need to release the lock.
2007-12-31 17:14:04 +01:00
Rob Shearman 51c051c0c4 rpcrt4: Keep a track of server context handles allocated during processing of a request.
Release them after processing of a request has finished to avoid a slow 
memory leak if the association isn't released for ages.
2007-12-31 17:13:55 +01:00
Rob Shearman 86a0b1d24e rpcrt4: Implement NdrConformantStringMemorySize. 2007-12-31 16:47:55 +01:00
Rob Shearman 274dc73ba1 rpcrt4: Add some tests for non-conformant strings. 2007-12-31 16:46:16 +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 a05923e1d3 rpcrt4: Add tests for varying and conformant varying arrays. 2007-12-26 14:02:53 +01:00
Rob Shearman e24f664b26 rpcrt4: Add tests for low-level context handle functions. 2007-12-26 13:26:52 +01:00
Rob Shearman 3d8af5630b rpcrt4: Implement low-level context handle support.
Server context handles are tracked from associations as their lifetime
is determined by the lifetime of the association.
2007-12-26 13:26:49 +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 366fd6e3af rpcrt4: Fix a memory leak from the get_filename call in the server tests. 2007-12-21 12:41:21 +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 6382c8af3f rpcrt4: Don't use BufferEnd in RpcStream_Write.
It is usually used during marshalling, where pStubMsg->BufferStart and 
pStubMsg->BufferEnd won't be valid. Replace it with a check using 
RpcMsg->Buffer and pStubMsg->BufferLength.
2007-12-19 19:35:42 +01:00
Rob Shearman c49a73b853 rpcrt4: Initialise memory passed into RPCs in the server test.
aligns contains padding, but the memory is marshalled in one block so 
call memset to avoid Valgrind warnings. padded and padded2 are 
marshalled as complex types so this is not required here.

Initialise the dummy member of test_list_t to zero for the TL_NULL case. 
Change the type to the smallest available to not waste buffer space.
2007-12-19 19:35:28 +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 1cb7df8a98 rpcrt4: Implement I_RpcGetCurrentCallHandle. 2007-12-18 19:48:19 +01:00
Michael Stefaniuc 6210c097a4 rpcrt4: Add missing LeaveCriticalSection. Found by Smatch. 2007-12-18 12:32:55 +01:00
Rob Shearman bdc5a34196 rpcrt4: Add a stub for I_RpcGetCurrentCallHandle. 2007-12-18 12:32:55 +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
Francois Gouget 76d266cbb0 rpcrt4: Add an rpcasync.h header stub and fix the RpcErrorStartEnumeration() prototype. 2007-12-18 12:32:42 +01:00
Rob Shearman 737510eeb6 rpcrt4: Move association code into a separate file. 2007-12-17 11:59:18 +01:00
Rob Shearman 22f530c835 rpcrt4: Make a server association when a bind packet is received in the server.
Support handing out association group IDs.
2007-12-17 11:59:13 +01:00
Rob Shearman 2bda19c6b0 rpcrt4: Return an error from rpcrt4_conn_tcp_read if recv returns 0. 2007-12-17 11:58:57 +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 c8a802eea8 include: Make RpcRaiseException DECLSPEC_NORETURN, like it is in the PSDK. 2007-12-14 12:28:03 +01:00
Rob Shearman ba280fb1b0 rpcrt4: Fix a typo in rpcrt4_conn_tcp_read. 2007-12-14 12:27:09 +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 9d8ebc1a24 rpcrt4: NdrStubGetBuffer shouldn't set BufferStart and BufferEnd.
These are supposed to point to the original buffer when the types were 
unmarshalled.
2007-12-14 12:23:46 +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 9642714d06 rpcrt4: Add tests for freeing non-NdrAllocate allocated memory blocks. 2007-12-13 14:30:40 +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 33c4c25dad rpcrt4: Make the NdrAllocate tests pass on XP SP2 and greater. 2007-12-12 16:01:33 +01:00
Rob Shearman d458a599eb widl: Add support for non-basetype return types. 2007-12-11 18:07:05 +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 80b8743aa2 rpcrt4: NdrRangeUnmarshall is implemented so add it to the spec file. 2007-12-10 12:04:19 +01:00