1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-24 15:17:06 +03:00

108 Commits

Author SHA1 Message Date
Stefan Metzmacher
66af8726e5 r4557: support for [flags()] on typedef enum|bitmap
NDR_PAHEX is handled by ndr_print_enum() now

metze
(This used to be commit c3b2d2cca37193fead0df1a8808c3ffcd5180a89)
2007-10-10 13:08:27 -05:00
Stefan Metzmacher
e3fd874341 r4551: add support for a pidl extensions
'declare bitmap foo1;'
'declare enum foo2;'

and also allow

typedef [public] bitmap ...
typedef [public] enum ...

you need to a forward declaration of bitmaps and enums

when you want to use them in another idl file,
and you need to make the real declaration to be public

see the next commit to samr.idl and netlogon.idl

metze
(This used to be commit a8d61aa47388b82595ee02b9cfd35f15afb93c2a)
2007-10-10 13:08:26 -05:00
Stefan Metzmacher
ecd9557922 r4540: sync enum and bitmap code
metze
(This used to be commit 2f3aea72ee7d9d90f7b910d11bdd1e96f9f0ebe1)
2007-10-10 13:08:19 -05:00
Stefan Metzmacher
d0da601ff7 r4535: add full support for
typedef bitmap {
    FLAG1 = 0x01
} fooflags;

typedef struct {
    fooflags flags;
}

metze
(This used to be commit 052a7d4f9a3a178149c65a616fdfd87152dff7eb)
2007-10-10 13:08:19 -05:00
Andrew Tridgell
58d9adf409 r4526: - much simpler (and more accurate!) ndr_size_*() code generation. It
is less efficient, but I really doubt that matters.

- use enum in epmapper.idl for protocol type

- added support for "enum8bit" flag, used in epmapper.idl
(This used to be commit 1a24a50384b7f588844cd012f1218ca242ca4507)
2007-10-10 13:08:18 -05:00
Andrew Tridgell
5526a6e891 r4523: the PROPERTIES change for typedef was not quite as simple as I thought. This puts in a workaround
that fixes things for now
(This used to be commit 0939b83a0f07563edc6448fb6a87a573dbaa9f6c)
2007-10-10 13:08:18 -05:00
Andrew Tridgell
b90c0850fc r4521: fixed up the handling of PROPERTIES elements after the change to support enum
(This used to be commit dee8eff2590be58c59b0db089fcca4af3e011c42)
2007-10-10 13:08:18 -05:00
Andrew Tridgell
3acf026603 r4518: added proper support for "typedef enum" in pidl. We can now use enums as types in switch
statements and variable types, and the value will be printed with its string name and value
(This used to be commit 1852033f2ec7584657d586e44d25a280959e4d81)
2007-10-10 13:08:17 -05:00
Tim Potter
ed1634c684 r4509: Add missing cr.
(This used to be commit 60f266bf6a30eee485c4f498569201ac50f85120)
2007-10-10 13:08:16 -05:00
Andrew Tridgell
3a17866503 r4170: don't check array size for conformant arrays (they are checked separately)
(This used to be commit e399834ae1aa9731d5d29c04d5b7b90e356dad6f)
2007-10-10 13:07:22 -05:00
Andrew Tridgell
d792ee4883 r4139: 2nd attempt at fixing the null ptr in size_is() problem.
(This used to be commit 3040cd65151dbcc54404f9be9d1fbcf539c7b635)
2007-10-10 13:06:30 -05:00
Andrew Tridgell
9f9e9b6477 r4136: when we have a size or switch variable that is a pointer we need to check that the server
hasn't given us a null pointer, otherwise we can segv when we dereference it. For example:

  [size_is(*size)] *x;
  uint32 *size;

if a broken server gave us x != NULL and size == NULL then we would crash. I've added
a check_null_pointer() call in pidl to catch this.
(This used to be commit 8cbd3f47a95367e861c6b99c44416a9ccef3c9ca)
2007-10-10 13:06:29 -05:00
Andrew Tridgell
ff470041c2 r4112: when a pointer is NULL on the wire ensure it is null in the structure
(This used to be commit 83221a0da07bf7c45757e737782f2f4ee541ad88)
2007-10-10 13:06:27 -05:00
Andrew Tridgell
74eb0017be r4110: fixed pidl to allow arrays to have size_is() and length_is() elements
that depend on variables that come after the array in the structure or function.

This has been something that has been problematic for a while, but the
winreg QueryValue problem finally prompted me to fix it properly. We
should now go back and fix up all the ugly workarounds we have used to
avoid this problem in other calls.

Unfortunately the solution is fairly complex, and involves the use of
the internal ndr token lists (similar to the solution for relative
pointers). I wonder if anyone else will be able to follow the logic if
I get run over by a bus :-)
(This used to be commit e839b19ec5581f669f2a7705b1fb80845313251c)
2007-10-10 13:06:27 -05:00
Jelmer Vernooij
a0fa682faa r3861: - Put ndr and rpc client code in seperate files
- Add some const
(This used to be commit a00bda88e1b6abdc36e5aa8c2a35f64855f67c96)
2007-10-10 13:05:58 -05:00
Jelmer Vernooij
46badf1908 r3790: use a registration function that is called from dcerpc_*_init functions
rather then a large table in librpc/gen_ndr/tables.c. This will allow us
to only link in only the required gen_ndr files (speeds up linking quite a
bit, makes binaries smaller).

Each gen_ndr_* file now has a init function that calls the init functions
of the interfaces it contains. I did it this way to keep pidl's code simple,
though it might hurt startup time a bit. I'd be happy to change it if
people like one function better.
(This used to be commit 3c436590ae95b58ad6d00e72d6fdd08a4d80f208)
2007-10-10 13:05:53 -05:00
Jelmer Vernooij
79c5d73a71 r3689: Large number of COM updates:
- Work on server side and local COM support (should work, just no
	  example classes yet)
 - Use vtables so that local and remote calls can be used transparently
 - Generate 'proxies and stubs' rather then heavily modified code in client.pm and server.pm. proxies (client side code) are generated in proxy.pm, stubs (server side dispatchers) are generated in stubs.pm
 - Support registering classes and interfaces
 - DCOM interfaces no longer have to be in the same IDL file as their
    base interface, which will allow us to split up dcom.idl
(This used to be commit 7466947a23985f9bb15209b67880f7b94dc515c8)
2007-10-10 13:05:44 -05:00
Jelmer Vernooij
e056ed97d7 r3626: More minor DCOM fixes
(This used to be commit 709f279b192c8f9eeea04749169c00f2d57b20d3)
2007-10-10 13:05:40 -05:00
Jelmer Vernooij
f2d715cd85 r3606: More DCOM fixes:
- OXID tables work now. IOXIDResolver is used if there is used for getting a STRINGBINDING if none is known yet
 - Add custom dissectors for STRINGARRAY and DUALSTRINGARRAY. If there's a way to get rid of these later on (by supporting them thru pidl somehow), I'd be happy to use that instead of doing it manually.

I can now get to the point where we have created an object and are connected to
it. The only thing left to do is being able to set the Object UUID properly..
(This used to be commit 54e1e5edca50d3cd496c080715e84ec62cb2a10c)
2007-10-10 13:05:38 -05:00
Jelmer Vernooij
6d3c74a67b r3513: Add (the infrastructure for) DCOM support. Contents:
- Support for sending over the object UUID in DCERPC calls
 - Simple torture test for the DCOM "Simple" object
 - Generate extra argument for "object" interfaces in pidl
 - Some stubs for common DCOM functions
(This used to be commit c052f2e1edd816206d8974af3140cec7ef97a70c)
2007-10-10 13:05:23 -05:00
Stefan Metzmacher
a2fd2488c7 r3484: - add support for conformant string arrays at the end of a struct
- add support for strings where the length excludes the NULLTERM

metze
(This used to be commit 8251d8b3e5af351972aa41aed63f7a7d2640910e)
2007-10-10 13:05:21 -05:00
Andrew Tridgell
90067934cd r3428: switched to using minimal includes for the auto-generated RPC code.
The thing that finally convinced me that minimal includes was worth
pursuing for rpc was a compiler (tcc) that failed to build Samba due
to reaching internal limits of the size of include files. Also the
fact that includes.h.gch was 16MB, which really seems excessive. This
patch brings it back to 12M, which is still too large, but
better. Note that this patch speeds up compile times for both the pch
and non-pch case.

This change also includes the addition iof a "depends()" option in our
IDL files, allowing you to specify that one IDL file depends on
another. This capability was needed for the auto-includes generation.
(This used to be commit b8f5fa8ac8e8725f3d321004f0aedf4246fc6b49)
2007-10-10 13:05:09 -05:00
Andrew Tridgell
2c52f52e02 r3423: auto-generate prototypes for all external functions in pidl
(This used to be commit 009488dfe55f5219b24c30222b1a8bf411a7e939)
2007-10-10 13:05:08 -05:00
Jelmer Vernooij
31403d548e r3043: Use binding strings for specifying endpoints. The property for
specifying a endpoint is now also 'endpoint' instead of 'endpoints'. The
default endpoint (if none is specified) is still "ncacn_np:[\\pipe\\ifacename]",
where ifacename is the name of the interface.

Examples:

[
  uuid(60a15ec5-4de8-11d7-a637-005056a20182),
  endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:")
]
interface rpcecho
{
	void dummy();
}

dcerpc_binding is now converted to ep_description in the server, but I hope to
completely eliminate ep_description later on.

The eventual goal of all these changes is to make it easier to add
 transports as I'm going to add support for
 ncalrpc (local RPC over named pipes) and ncacn_unix_stream (Unix sockets).
(This used to be commit f3da7c8b443a29b0c656c687a277384ae1353792)
2007-10-10 13:01:53 -05:00
Jelmer Vernooij
fe15b46d61 r2990: Add support to pidl for autogenerating ndr_size_*() functions. Adding
the [gensize] property to a struct or union will make pidl generate a
ndr_size_*() function.

(not all nasty bits of NDR are completely covered yet by the
 ndr_size*() functions, support for those will be added when necessary)

I also have a local patch (not applied now) that simplifies the pidl output
and eliminates the number of functions required. It would, however, make
pidl more complex.
(This used to be commit 7c823f886afd0c4c6ee838f17882ca0658417011)
2007-10-10 12:59:55 -05:00
Andrew Tridgell
ddd1f092a5 r2988: this should fix support for negative switch levels in PIDL
(This used to be commit 21ed51d47f7efd493ad64b564fb6362ef8fb067f)
2007-10-10 12:59:55 -05:00
Andrew Tridgell
da5cbd0886 r2968: fixed the byte order problem with the new RHS parsing on ncacn_ip_tcp
(This used to be commit cc00f9b6b87783d189df00de0ce9ae92b907e21a)
2007-10-10 12:59:53 -05:00
Andrew Tridgell
8d0f79595b r2948: added support for the [range(low,high)] attribute in pidl. This allows
range checking of any integer value, to help protect against denial of
service attacks (which could otherwise cause large memory allocations)
(This used to be commit dbe6430d78f1b9aa59969074077e4afa5adf7570)
2007-10-10 12:59:50 -05:00
Jelmer Vernooij
2e8b3926c6 r2933: Only pull a union once when it occurs in a subcontext
(This used to be commit 309623447eef9ae554e2f25713c2123ab578cc6e)
2007-10-10 12:59:49 -05:00
Jelmer Vernooij
daa7c98409 r1786: Add support for the 'helpstring' attribute on interfaces
(This used to be commit 85fb26a05d57e58795b0c0ffa93dc9e0fa902431)
2007-10-10 12:57:56 -05:00
Andrew Tridgell
e2357c67f5 r1757: much simpler (and smaller, faster etc) way of doing relative pointers
in pidl. This mechanism should be much easier to extend to the
"retrospective subcontexts" that jelmer needs.

also produced more standards complient full-pointer offsets. This
keeps ethereal happy with decoding our epmapper frames.
(This used to be commit ecb7378bbcd86727aedfa04a9e302e06b0a2ccd9)
2007-10-10 12:57:54 -05:00
Jelmer Vernooij
1d3b81e6c0 r1736: - Pidl updates:
- Support for "object oriented" interfaces in pidl
 - Support for inherited interfaces in pidl
 - Simplification of the support for properties on an interface
- Start on dcom rpc torture tests
(This used to be commit 45c3d0036b8510102816f9cdff9210098259cc5f)
2007-10-10 12:57:51 -05:00
Andrew Tridgell
15dddf7b1e r1671: make [relative] pointers in idl much more generic, treating them just
like normal pointers in most cases. This means we can now support
relative pointers to unions, builtin types etc, whereas we could only
previously support relative pointers to structures.

metze needs this for the PAC decoding.
(This used to be commit 0d063725e12f51375b7d0be55a19072a9a54e7e6)
2007-10-10 12:57:48 -05:00
Tim Potter
2768216e62 r1611: Put a brace on a new line.
(This used to be commit d9b4e45f46cd738b196f8d167cea264b3ce0d364)
2007-10-10 12:57:44 -05:00
Andrew Tridgell
0293c1859c r1148: fixed a minor formatting error in generated code
(This used to be commit 0a67b9c324fb4fd74de0f3c12e55de6972b88cdd)
2007-10-10 12:56:41 -05:00
Andrew Tridgell
004a9979a9 r1133: - add ndr_pull_ptr() as a separate call instead of ndr_pull_uint32()
(useful for debugging IDL)

- fixed a couple of places that auto-generate incorrect printf style arguments
  for ndr_pull_error()
(This used to be commit ad3324a79ce030df4c5ed46408e662b46588f89f)
2007-10-10 12:56:39 -05:00
Andrew Tridgell
4ee70616cc r1014: change the handling of r->out to auto-zero the structure, and auto-copy
in,out,ref vars
(This used to be commit dffe9165164a111313d744d942645ad2df83d5f3)
2007-10-10 12:56:26 -05:00
Andrew Tridgell
5765abf1b8 r894: use _t in generated pidl code
(This used to be commit 20cc981e3338200aea6e005ed69dbe5b5b102bbb)
2007-10-10 12:56:18 -05: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 866ef2edab91996964c8b43dbdd417f5908a00e1)
2004-01-22 01:12:43 +00:00
Andrew Tridgell
a90db73efd make pidl no longer dependent on Data::Dumper, which isn't installed
on some systems
(This used to be commit a4aa9168c0f80cf6e758c380d41335db50d06869)
2003-12-15 08:58:00 +00:00
Andrew Tridgell
ba523d895a fixed the handling of zero-length top level arrays in pidl
(This used to be commit fa45529af72090c2604708a651d5e5714a844d72)
2003-12-15 01:07:08 +00:00
Andrew Tridgell
e2898c098f fix _ptr_ declaration
(This used to be commit 5fed4681edc93405a8b39080adfe72af8beea65d)
2003-12-14 08:44:38 +00:00
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 28fa62d63d020052a0d2f467f3f9cc6344aaf0ce)
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 46e0a358198eeb9af1907ee2a29025d3ab23b6d1)
2003-12-12 03:59:09 +00:00
Andrew Tridgell
e5ed18db65 more portable array of endpoints code from pidl
(This used to be commit c598590a117d4281c530cded4bf9dae16ac1ee76)
2003-12-10 23:49:55 +00:00
Andrew Tridgell
399496d9d9 netr_DatabaseSync() now works fully for databases 0, 1 and 2
(This used to be commit c4c09e9413d3886e030e98739121bbae81f80ca5)
2003-12-02 04:59:18 +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 3dd978b12bb5571fba4e1839c0f7ee60cf729aa2)
2003-12-02 00:31:54 +00:00
Andrew Tridgell
a6cf6cada9 added netr_LogonSamLogon() and test code
(This used to be commit 4fa3ad3ecbfd8f8663fcdfaba9a7db481e303f2b)
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 bb42107dccf3a384a4a5c029b4d2752e0898d7cb)
2003-12-01 03:19:43 +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 c8b8480244b4ab6204403dc65e92e4317b410a84)
2003-11-28 05:20:11 +00:00