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

122 Commits

Author SHA1 Message Date
Andrew Tridgell
869df3adbd handle the auto-allocation of [ref] output arrays in pidl. This
can simplify rpc servers a lot.
(This used to be commit 28fa62d63d)
2003-12-12 04:18:21 +00:00
Andrew Tridgell
16309de71d * the RPC-ECHO pipe now works in smbd, as long as the data sizes
don't cause fragmented pdus (I'll add fragments shortly)

 * change data_blob_talloc() to not zero memory when the 2nd argument
   is NULL. The zeroing just masks bugs, and can't even allow a DOS
   attack

 * modified pidl to ensure that [ref] arguments to the out side of
   functions are allocated when parsing the in side. This allows rpc
   backends to assume that [ref] variables are all setup. Doesn't work
   correctly for [ref] arrays yet

 * changed DLIST_ADD_END() to take the type instead of a tmp
   variable. This means you don't need to declare a silly tmp variable in
   the caller
(This used to be commit 46e0a35819)
2003-12-12 03:59:09 +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
8fa36b1fbc some systems don't have "which" and some systems don't have the "-nt"
flag to test. It's amazing that systems like that are ever sold.
(This used to be commit fe91635da8)
2003-12-08 07:37:38 +00:00
Andrew Tridgell
2773e54c98 commit idl.pm now, as many build farm machines don't have 'yapp'
(This used to be commit 2b1300386d)
2003-12-08 02:55:28 +00:00
Andrew Tridgell
58714e6bda * reduced the number of grammer conflicts a lot using (arbitrary)
precedence rules

 * build a standalone parser. When we come to distributing Samba4 we
   can just include idl.pm and other developers won't need Parse::Yapp
   installed

 * avoid the recursive make in most cases in build_idl.sh
(This used to be commit be2c2be459)
2003-12-08 02:24:40 +00:00
Andrew Tridgell
daeffe3f11 don't save the intermediate form to disk unless we need to
(This used to be commit 4e1a5a21a4)
2003-12-07 23:47:35 +00:00
Andrew Tridgell
dbf4b65d49 a bit more speed and better line matching in errors
(This used to be commit 788f6c44db)
2003-12-07 13:51:23 +00:00
Andrew Tridgell
4e1bac41f4 make pidl a little less verbose
(This used to be commit 76f48affe5)
2003-12-07 13:39:45 +00:00
Andrew Tridgell
55d2c54e03 re-wrote pidl to use Parse::Yapp instead of Parse::RecDescent, This
makes pidl about 3x faster, and also gives us much better error
reporting and a more standard grammer definition that will be much
easier to code in lex/yacc if we want to do so at a later
date. (Parse::Yapp uses essentially the same grammer file as lex/yacc)

It also means we no longer need Parse::RecDescent, which should make
pidl much more portable.
(This used to be commit 4bbaffeb44)
2003-12-07 13:38:07 +00:00
Andrew Tridgell
399496d9d9 netr_DatabaseSync() now works fully for databases 0, 1 and 2
(This used to be commit c4c09e9413)
2003-12-02 04:59:18 +00:00
Andrew Tridgell
d65f0095c9 added netr_DatabaseSync(). It doesn't work as I haven't done schannel
yet, but at least the request is understood by w2k3

Also modified pidl to allow multiple branches in a union to have the
same element. This is used in netlogon.
(This used to be commit 983c0e9683)
2003-12-02 03:06:21 +00:00
Andrew Tridgell
06ae424835 * netr_ServerPasswordSet() now works - the test suite changes the
machine account password.

  * neater handling on value() options in IDL. The auto-print code
    will now display the right value so you don't need to initialise
    it in your C code
(This used to be commit 3dd978b12b)
2003-12-02 00:31:54 +00:00
Andrew Tridgell
a6cf6cada9 added netr_LogonSamLogon() and test code
(This used to be commit 4fa3ad3ecb)
2003-12-01 09:28:10 +00:00
Andrew Tridgell
5b46116923 added netr_ServerReqChallenge and cleaned up byte array printing
(This used to be commit bb42107dcc)
2003-12-01 03:19:43 +00:00
Andrew Tridgell
b0531a38cc started adding netlogon IDL and test suite
(This used to be commit 3d64eefb46)
2003-12-01 01:41:38 +00:00
Andrew Tridgell
606514b077 make sure there is at least one valid interface in an IDL file
(This used to be commit 86ab394806)
2003-11-28 05:32:40 +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
07fdc2c73e * support multiple interfaces in one IDL file in pidl
* make far more generated functions static

 * get rid of gen_rpc, and include the client calls in ndr_*.c

 * added placeholder IDL for a number of intefaces (dcom, wzcsvc, browser etc)
(This used to be commit a2bdf0be01)
2003-11-28 03:47:45 +00:00
Andrew Tridgell
df5949efb4 added auto-generation of the IDL interface tables. This makes two less
places that need to be edited when someone adds a new IDL file.
(This used to be commit ccd9ddeed6)
2003-11-28 00:48:05 +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
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
06942f3ddb added some paranoid checking for enums
(This used to be commit 3492f37b0b)
2003-11-26 01:13:00 +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
7d36545d33 give far more detail in the EPMAPPER results
(This used to be commit 4203019698)
2003-11-24 05:28:10 +00:00
Andrew Tridgell
3114289c64 make sure we don't try to update a constant
(This used to be commit 4a6034f2e3)
2003-11-24 03:31:03 +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
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
1b9452ffc5 fixed the handling of value() attributes on scalars in IDL that
reference other elements of the same structure
(This used to be commit d8d17be290)
2003-11-23 07:14:17 +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
02dc7536dd save about 35% of the time for "make idl" by processing multiple IDL
files at once, which means less perl startup time.
(This used to be commit 64b2c67e47)
2003-11-23 03:42:20 +00:00
Andrew Tridgell
868555bca5 added support for enumerated types in IDL files. This makes unions
easier to work with.
(This used to be commit 60be15d306)
2003-11-22 22:53:08 +00:00
Andrew Tridgell
e79e6bc472 added support for 'const' in IDL files. This makes it easy to define
symbolic names for bitfields etc.
(This used to be commit 344a6e1682)
2003-11-22 22:09:10 +00:00
Andrew Tridgell
277322b9d4 added the beginnings of an IDL validator, to give clearer errors when
IDL is not valid
(This used to be commit c1b708708e)
2003-11-22 12:25:20 +00:00
Andrew Tridgell
677fb26deb * fixed handling of relative subcontext unions
* fixed GetPrinter in spoolss after OpenPrinter
(This used to be commit 4aea2d79dd)
2003-11-22 10:37:00 +00:00
Andrew Tridgell
175e947579 * enable RPC/NDR validation in all smbtorture code
* allow us to distinguish between null arrays and zero length arrays,
   by making the allocation size a minimum of 1 on array pull
(This used to be commit 11c0fe548e)
2003-11-22 08:41:40 +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
3f2598abad added Parse::RecDescent module into pidl to ensure we all use the same
version. This should fix the problems Richard was seeing.
(This used to be commit 76c24a5cb0)
2003-11-22 01:40:24 +00:00
Andrew Tridgell
0a0f8b5e3a fixed a bug with pushing non-pointer unions
(This used to be commit bc2fbc79cc)
2003-11-21 22:34:45 +00:00
Andrew Tridgell
a465add90f * changed the way strings are handled in pidl to a much more general
interface. We now support an arbitrary set of flags to each parser,
  and these can be used to control the string types. I have provided
  some common IDL string types in librpc/idl/idl_types.h which needs to
  be included in every IDL file.

* added IDL for the endpoint mapper. Added a test suite that enumerates
  all endpoints on the server.
(This used to be commit d2665f36a7)
2003-11-21 13:14:17 +00:00
Andrew Tridgell
9fc7be869b added support for 'ascstr', a ascii string in MSRPC !
(This used to be commit a5eeb3be05)
2003-11-21 02:19:09 +00:00
Andrew Tridgell
d869d8c8eb ignore generated idl.pm
(This used to be commit e9d18ecc2d)
2003-11-20 22:51:02 +00:00
Andrew Tridgell
15776970a5 we now use a copy of pidl inside the samba4 source tree at
source/build/pidl/

I imported the code using direct respository manipulation to preserve
the commit history
(This used to be commit 2ed87a52cc)
2003-11-20 22:46:01 +00:00
Andrew Tridgell
5d77cda1dc make sure we don't try to use c++ style variable declaration
(This used to be commit 9fee737931)
2003-11-20 07:28:59 +00:00
Andrew Tridgell
e2254cc18f fixed pushing structures containing pointers inside unions
(This used to be commit bb30f42cd4)
2003-11-20 07:07:09 +00:00
Andrew Tridgell
08026ca1e0 a bit neater way of emitting code
(This used to be commit 964c323721)
2003-11-20 06:34:18 +00:00
Andrew Tridgell
9fb8ee5765 * cope with pidl not being in $HOME/pidl
* cope with empty structures in unions
(This used to be commit a706ff7893)
2003-11-20 05:39:54 +00:00
Andrew Tridgell
b2fd4284b6 use a precompiled grammer in pidl. This speeds up pidl by about a
factor of 2 on my system.
(This used to be commit a291dd835f)
2003-11-20 04:36:09 +00:00
Andrew Tridgell
cde87e39c6 avoid compiler warnings for unused variables with [relative] pointers
(This used to be commit 786566e53c)
2003-11-20 02:06:25 +00:00
Andrew Tridgell
52461a3d14 its LoadStructure() in util.pm that doesn't like strict perl - any
perl gurus out there know why?
(This used to be commit a1d9afc92f)
2003-11-20 02:03:36 +00:00