I was working on the Wireshark dissector and noticed that a EcDoConnectEx header
was not dissected correctly. Diving into the problem I found that the idl of
AUX_PERF_CLIENTINFO is not correct. It currently reads:
typedef [public,flag(NDR_NOALIGN)] struct {
uint32 AdapterSpeed;
uint16 ClientID;
uint16 MachineNameOffset;
uint16 UserNameOffset;
uint16 ClientIPSize;
uint16 ClientIPOffset;
uint16 ClientIPMaskSize;
uint16 ClientIPMaskOffset;
uint16 AdapterNameOffset;
uint16 MacAddressSize;
uint16 MacAddressOffset;
ClientMode ClientMode;
uint16 Reserved;
uint8 MacAddress[MacAddressSize];
uint8 ClientIP[ClientIPSize];
uint8 ClientIPMask[ClientIPMaskSize];
nstring MachineName;
nstring UserName;
nstring AdapterName;
} AUX_PERF_CLIENTINFO;
However the nstring only appear if the corresponding "*Offset" variable has a
value greater than 0. So I'm looking for a syntax like:
...
[if(MachineNameOffset > 0)] nstring MachineName;
[if(UserNameOffset > 0)] nstring UserName;
[if(AdapterNameOffset > 0)] nstring AdapterName;
} AUX_PERF_CLIENTINFO;
I have no knowledge about the DCE/RPC idl syntax, Microsoft's midl or samba's
pidl. Can something like this be expressed with pidl?
If we can get this to work, I can send you a patch to the idl file which adds
some new MAPI aux header structures. To verify that my analysis was correct I
have manually edited the generated Wireshark dissector C code, but of course I'd
like to express this in the idl file for long term maintainability.
--
---> Dirk Jagdmann
----> http://cubic.org/~doj
-----> http://llg.cubic.org
_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel