samba-technical@lists.samba.org
[Top] [All Lists]

Re: pidl facillitates illicit data sharing between idl files

Subject: Re: pidl facillitates illicit data sharing between idl files
From: "Sam Liddicott"
Date: Wed, 30 Sep 2009 08:29:49 +0100
* tridge wrote, On 29/09/09 22:13:
Hi Sam,

 > If I add a definition such as this, to my pidl file:
> > typedef struct DATA_BLOB {
 >           uint8 *data;
 >           uint32 length;
 >   } DATA_BLOB;

There are two problems with this:

 1) DATA_BLOB is a base type in pidl. It is not defined in any idl
 file, but instead is a built-in type like uint32 and other base
 types. Trying to re-define it is a bad idea.

good tip. I'm also working with MIDL where it isn't a base type, but I can #ifdef that

 2) the normal form for structure typedefs in pidl is:

   typedef struct {
           el1type el1;
           el2type el2;
   } NAME;

  Notice that the first line does not contain the structure name.

Aye, but:
http://blogs.msdn.com/oldnewthing/archive/2008/03/27/8338530.aspx

(MIDL again) but I can have a macro to nullify the struct name when not running under midl.

> For my own benefit I just renamed by struct to avoid the collision, but > I believe it is not intentional that one IDL file should cross-infect > another in this way - or have I mis-understood?

you've re-defined a base type. All bets are off after that :-)


No doubt - and thanks for the tips.
I wonder if, if I had also re-defined one of the private types used in winsrepl.idl if it would have had a similar effect.

It was the cross-infection that only occurs if all the IDL need compiling that I was thinking about...

anwyay, thanks for the tips.

Sam

<Prev in Thread] Current Thread [Next in Thread>