IDL variable sized array of arrays problem
Amin Azez
azez at ufomechanic.net
Mon Jan 14 11:46:15 GMT 2008
This may be an IDL bug or a misunderstanding in my own mind. It's not
holding me up, but I thought I'd mention it for interest:
This IDL:
void proxy_Read(
[in] uint32 fnum, /* file number as supplied by remote device */
[in] uint32 offset,
[in] uint32 mincnt,
[in] uint32 maxcnt,
[in,out,ref] uint16 *flags, /* read_for_execute, zlib, md5 etc */
[in] uint16 digest_count,
[in] [size_is(digest_count)] uint[8] digest[16][],
[out] uint32 *nread,
[out] [size_is(*nread)] uint8 data[]
);
fails on:
[in] [size_is(digest_count)] uint[8] digest[16][],
with:
Compiling librpc/gen_ndr/ndr_proxy.c
librpc/gen_ndr/ndr_proxy.c: In function ‘ndr_pull_proxy_Read’:
librpc/gen_ndr/ndr_proxy.c:61: error: cast specifies array type
line 61 says:
NDR_PULL_ALLOC_N(ndr, r->in.digest, ndr_get_array_size(ndr,
&r->in.digest[cntr_digest_0]));
(admittedly that array structure was not a ideal, I was just getting
something working):
This works:
...
[in] [size_is(digest_count)] digest digest[],
[out] uint32 *nread,
[out] [size_is(*nread)] uint8 data[]
);
typedef struct digest {
uint8 data[16];
} digest;
Sam
More information about the samba-technical
mailing list