1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-13 13:18:06 +03:00
Commit Graph

98 Commits

Author SHA1 Message Date
Tim Potter
f1c3fa060e This is the start of a C API to the DCERPC client routines. Currently
the only way to access this is to cut&paste from torture/rpc/*.c
(This used to be commit 3355fec421)
2004-04-03 01:25:40 +00:00
Andrew Tridgell
e967ff114e split up the schannel rpc client code into separate key establishment
and bind calls, but with a combined call that does both. This makes is
easier to write a schannel test program that tried different keys.
(This used to be commit 9d89928086)
2004-02-21 04:46:49 +00:00
Stefan Metzmacher
8838344108 do not return a value in a void function
metze
(This used to be commit 836612b841)
2004-02-12 05:52:53 +00:00
Andrew Tridgell
9b662ae037 fixed a void return spotted by metze
(This used to be commit 3f1b7e51c9)
2004-02-11 13:18:05 +00:00
Andrew Tridgell
2ac07b1b0f we can close the netlogon pipe used to setup the schannel session key
as soon as we are finished with the netlogon negotiation phase. The
session key remains valid.
(This used to be commit 95a40d4693)
2004-02-10 20:47:22 +00:00
Andrew Tridgell
e159cc7e05 don't always use the same schannel context number
(This used to be commit 396e075712)
2004-02-10 11:19:58 +00:00
Andrew Tridgell
078cced5ec - modified the dcerpc client security code to be generic, so ntlmssp
and schannel are both instances of possible security modules

- added schannel sign and sign/seal support to the dcerpc client
  code. You select it with binding options of "schannel,sign" or
  "schannel,seal".
(This used to be commit 05db0b9d94)
2004-02-10 10:22:12 +00:00
Stefan Metzmacher
0b4da9d7e0 - add 'print' to the DCERPC binding strings
e.g.
  ncacn_np:myserver:[samr,sign,print]

  will now enable the packet debugging

  and the debugging is not bound anymore to the debuglevel >= 2
  in the torture tests

- also the dcesrv_remote module now supports debugging of the packets
  use the 'dcerpc_remote:binding' smb.conf parameter.

metze
(This used to be commit 40abf3c584)
2004-02-03 14:56:07 +00:00
Stefan Metzmacher
a9b28120b8 make more function static, they are still available via the function pointers
metze
(This used to be commit 4597643e76)
2004-02-03 11:05:36 +00:00
Andrew Tridgell
fb15b95bc5 added a little bit of const magic to get rid of the data in librpc/gen_ndr/*.o
(This used to be commit 866ef2edab)
2004-01-22 01:12:43 +00:00
Andrew Tridgell
8ae5b50a6e added code to the RPC-SPOOLSS test that demonstrates that policy
handles are not shared between open dcerpc connections, even when
those connections are on the same SMB socket. I have tested this with
w2k3, w2k and NT4. It seems that policy handles have a strict scope of
the dcerpc connection on which they were opened.

I realise that this goes against existing folk-law in the team, but it
seems that the previous testing (I'm not sure who did this?) was
wrong. Perhaps clients do send us policy handles from other
connections, but if they do then the correct thing to do is to fail
the operation with a dcerpc fault. I suspect that failing it with
exactly the right dcerpc fault code is important.
(This used to be commit 2ed24d29ba)
2004-01-20 06:07:09 +00:00
Andrew Tridgell
a8400ce610 fixed removal of moe than one ncacn_* option from option list
(This used to be commit 09a9b25c8d)
2003-12-19 04:26:26 +00:00
Andrew Tridgell
8369293090 fixed a segv in RPC-* when debug level > 2
thanks to Kai for spotting this!
(This used to be commit 0fc42c33d3)
2003-12-17 21:37:34 +00:00
Tim Potter
a2ec4b990d Fix typo.
(This used to be commit 3f1b781c56)
2003-12-17 03:38:06 +00:00
Andrew Tridgell
7efa19cd22 added a smb.conf flag "rpc big endian" that tells our rpc server to
send packets in bigendian format.
(This used to be commit 44df662960)
2003-12-17 02:06:44 +00:00
Andrew Tridgell
b3b10bce33 added a define for the DCERPC little-endian data representation flag
(This used to be commit 691f9c1c44)
2003-12-16 11:24:28 +00:00
Andrew Tridgell
6ba28732ec fixed the RPC-MGMT and RPC-SCANNER tests to work with the new
dcerpc_binding_string code
(This used to be commit 1fa68c18fa)
2003-12-16 10:57:17 +00:00
Andrew Tridgell
ecc2519594 no longer require the pipe name or tcp port number to be the first
option in the ncacn_* syntax
(This used to be commit 74f36d32bb)
2003-12-16 10:15:21 +00:00
Andrew Tridgell
24c22aef90 a fairly large commit!
This adds support for bigendian rpc in the client. I have installed
SUN pcnetlink locally and am using it to test the samba4 rpc
code. This allows us to easily find places where we have stuffed up
the types (such as 2 uint16 versus a uint32), as testing both
big-endian and little-endian easily shows which is correct. I have now
used this to fix several bugs like that in the samba4 IDL.

In order to make this work I also had to redefine a GUID as a true
structure, not a blob. From the pcnetlink wire it is clear that it is
indeed defined as a structure (the byte order changes). This required
changing lots of Samba code to use a GUID as a structure.

I also had to fix the if_version code in dcerpc syntax IDs, as it
turns out they are a single uint32 not two uint16s.

The big-endian support is a bit ugly at the moment, and breaks the
layering in some places. More work is needed, especially on the server
side.
(This used to be commit bb1af644a5)
2003-12-16 09:02:58 +00:00
Andrew Tridgell
8431335ec5 more flexible handling of [] in binding strings
(This used to be commit edc67fffea)
2003-12-15 03:41:08 +00:00
Andrew Tridgell
71f81d1d3e allow the specification of full dcerpc endpoint binding strings on the
command line. This allows you to (for example) control signing/sealing
of smbtorture RPC sessions
(This used to be commit a73825eb49)
2003-12-15 03:29:55 +00:00
Andrew Tridgell
a05882b34b fixed fragmented signed connections to our rpc server over SMB
(This used to be commit f5df126c25)
2003-12-14 12:21:21 +00:00
Andrew Tridgell
8f6b3eb1a9 fixed a bug handling multiple PDUs being read from a socket at one
time in the rpc server.

started on the framework for the dcerpc authentication server code
(This used to be commit 74041b6a0a)
2003-12-14 01:09:10 +00:00
Andrew Tridgell
340d9b71f9 added a basic dcerpc endpoint mapper to Samba4. Currently only
implements the epm_Lookup() call, I'll add the other important calls
soon. I was rather pleased to find that epm_Lookup() worked first
time, which is particularly surprising given its complexity.

This required quite a bit of new infrastructure:

  * a generic way of handling dcerpc policy handles in the rpc server

  * added type checked varients of talloc. These are much less error
    prone. I'd like to move to using these for nearly all uses of
    talloc.

  * added more dcerpc fault handling code, and translation from
    NTSTATUS to a dcerpc fault code

  * added data_blob_talloc_zero() for allocating an initially zero
    blob

  * added a endpoint enumeration hook in the dcerpc endpoint server
    operations
(This used to be commit 3f85f9b782)
2003-12-13 02:20:40 +00:00
Andrew Tridgell
fcc4efd1ea the next step in the dcerpc server code. Added the link between the
IPC IO routines and the dcerpc endpoint servers.
(This used to be commit 4929c53bc8)
2003-12-11 09:07:45 +00:00
Andrew Tridgell
e5ed18db65 more portable array of endpoints code from pidl
(This used to be commit c598590a11)
2003-12-10 23:49:55 +00:00
Andrew Tridgell
2bde98c0ee the rest of the initial rpc server side infrastructure
(This used to be commit 5fb01b0ec0)
2003-12-10 22:24:33 +00:00
Andrew Tridgell
7ec0ead48a the beginnings of an automated tool for working out IDL properties of
a pipe. I'm not sure how possible this will be without lots of human
intervention, but its an interesting thing to try.
(This used to be commit d5afe7c6a8)
2003-11-28 08:51:09 +00:00
Andrew Tridgell
ba33beec05 * added a bunch of placeholder IDL files
* allow for an interface to list its endpoints in the IDL file, so we
   can automatically make the server listen on the right pipes, and
   can scan pipes more easily (I don't take advantage of this yet,
   just putting the infrastructure in place)
(This used to be commit c8b8480244)
2003-11-28 05:20:11 +00:00
Andrew Tridgell
c7c9e61987 more epmapper and mgmt magic
protocol 0x1f is interesting - its ncacn_http !
(This used to be commit e3d40e3da6)
2003-11-27 07:28:46 +00:00
Andrew Tridgell
ab3d728b7e added an rpc scanner. This prints messages like this:
uuid 82273fdc-e32a-18c3-3f78-827929dc23ea  version 0x0000:0x0000  'eventlog'
        24 calls available
        WARNING: local IDL defines 4 calls

when all the WARNINGs are gone then we know we have all the calls :)
(This used to be commit f5821b2468)
2003-11-27 05:34:28 +00:00
Andrew Tridgell
61bb3c865c use EPMAPPER_PORT constant instead of 135
(This used to be commit 953ab587dc)
2003-11-27 04:04:31 +00:00
Andrew Tridgell
a9203bf02b a couple of tidyups
* don't try to map the epmapper uuid !

 * some preliminary support for alter context pdus
(This used to be commit f9857e5685)
2003-11-27 04:02:15 +00:00
Andrew Tridgell
1ca1b85c4c by default sign RPC over TCP but not RPC over SMB. I will add command line control soon
(This used to be commit 215852116c)
2003-11-26 12:29:08 +00:00
Andrew Tridgell
c168ca2157 transfer syntax V2 isn't as magic as I thought
(This used to be commit bb3bb5dc8d)
2003-11-26 03:43:04 +00:00
Andrew Tridgell
fca5f78032 use the IDL defined NDR version number
(This used to be commit 00e0c14b76)
2003-11-26 03:41:06 +00:00
Andrew Tridgell
fffd741a7a added auto-determination of the DCERPC over TCP port number by asking
the servers endpoint mapper
(This used to be commit 4abf5376b0)
2003-11-26 03:36:17 +00:00
Andrew Tridgell
c123c84541 fixed some memory leaks in the dcerpc use of ntlmssp signing
(This used to be commit abbc9993b8)
2003-11-26 02:08:41 +00:00
Andrew Tridgell
e0ac659917 signed DCERPC over TCP now works !
* moved ntlmssp code into libcli/auth/, and updated to latest ntlmssp
   code from samba3 (thanks Andrew! the new interface is great)

 * added signing/ntlmssp support in the dcerpc code

 * added a dcerpc_auth.c module for the various dcerpc auth mechanisms
(This used to be commit c18c9b5585)
2003-11-26 01:16:41 +00:00
Andrew Tridgell
f4e485117a * fixed byte order in epmapper parsing
* allow rpc transport to be specified on command line in smbtorture
(This used to be commit 8a82050fd6)
2003-11-24 13:19:00 +00:00
Andrew Tridgell
7befc0648e initial implementation of dcerpc over tcp. RPC-EPMAPPER works, now to
add epm_Map calls and support the rest of the pipes
(This used to be commit 39add48158)
2003-11-24 12:40:47 +00:00
Andrew Tridgell
bbb11d4a0d * prepared the dcerpc subsystem for adding the RPC over TCP transport
* fixed a uninitialised variable bug in pidl (found by valgrind)
(This used to be commit 8bce61b8af)
2003-11-24 11:45:33 +00:00
Andrew Tridgell
e4773b184c added tests for the remaining calls on the rpc management interface
(This used to be commit 00f9b0e120)
2003-11-24 03:21:49 +00:00
Andrew Tridgell
c7fd83d0b2 added the dcerpc remote management interfaces as mgmt.idl, and wrote a
test suite. The test suite dumps all of the interfaces available on
all pipes. There sure are a lot more interfaces on w2k3 than w2k !
(This used to be commit f94bc07990)
2003-11-24 01:24:29 +00:00
Andrew Tridgell
3d0e6b3835 added a tool called 'ndrdump' that allows you to dump NDR data
according to the current IDL taking the data from a file. In
combination with a little hack to ethereal to extract data this is a
quite powerful IDL development tool.
(This used to be commit 229a325c3c)
2003-11-23 13:44:19 +00:00
Andrew Tridgell
800d3e0134 ooh, this is fun!
I have recoded the core dcerpc packet structures (all the PDUs etc) in
terms of IDL, which means we now use pidl to generate all the code for
handling the most basic dcerpc packets. This is not normally possible
as it isn't completely valid NDR, but pidl has a number of extensions
that make it quite easy.

This also means we get the server side dcerpc
marshalling/unmarshalling code for free.
(This used to be commit 92bcad0258)
2003-11-23 06:28:12 +00:00
Andrew Tridgell
be77d9c60d * fixed null terminated string handling
* fixed nested relative offsets in push functions

the spoolss torture test now passes!
(This used to be commit 60ced76160)
2003-11-22 11:49:22 +00:00
Andrew Tridgell
4666ec9301 * fixed NDR flag inheritance across push subcontexts
* don't consider not doing lsa_QueryInfoPolicy level 11 a failure
   (w2k3 doesn't have this level, w2k does)

 * on a NDR validation failure dump the failed data at level 3
(This used to be commit 9d5078962f)
2003-11-22 09:32:35 +00:00
Andrew Tridgell
86a604429e a fairly major upgrade to the dcerpc system
* added a NDR validator. The way it works is that when the
   DCERPC_DEBUG_VALIDATE_* flags are set the dcerpc system will
   perform NDR buffer validation. On sending a request the packet is
   first marshalled, then unmarahslled, then marshalled again, and it is
   confirmed that the two marshalling results are idential. This
   ensures that our pull and push routines are absolutely in sync, so
   that we can be very confident that if a routine works in the client
   then the corresponding routine must work on the server side. A
   similar validation is performed on all replies.

 * a result of this change is that pidl is fussier about the [ref]
   tag. You can only use it on pointers (which is the only place it
   makes sense)

 * fixed a basic alignment bug in the push side of the NDR code

 * added server side pull/push support. Our dcerpc system is now fully
   ready to be used on the server side.

 * fixed the relative offset pointer list. It must be traversed in
   reverse order on push

 * added automatic value setting for the size parameter in outgoing
   SdBuf structures.

 * expanded the ndr debugging code to always give a message on any
   failure

 * fixed the subcontext push code

 * fixed some memory leaks in smbtorture RPC tests
(This used to be commit 8ecf720206)
2003-11-22 08:11:32 +00:00
Andrew Tridgell
b008369175 moved the pidl auto-generated files out of CVS
(This used to be commit 49c72d4276)
2003-11-20 11:09:53 +00:00